聊聊分布式开发 Spring Cloud

概述

本文章只是简单介绍了微服务开发的一些关键词,如果需要知道具体实现和可以评论留言 我会及时的增加连接写出具体实现(感觉没人看 就没写具体实现)。

持续更新中。。。。。。

SpringCloud和Dubbo的区别

Dubbo的定位始终是一款基于传输层(TCP)的RPC框架,RPC(Remote Procedure Call)通信过程在传输层中完成(HTTP通信在应用层完成),

所以RPC调用方式需要服务端与客户端之间建立Socket连接来实现二进制数据的交换

SpringCloud抛弃了Dubbo的RPC通信,采用的是基于HTTP的REST方式(Spring Cloud就真正的将整个Rest作为RPC实现技术)。

而SpringCloud的目标是微服务架构下的一站式解决方案。

服务治理和服务发现Eureka

Spring的服务治理是使用Netflix的Eureka作为服务治理的,它是我们构建Spring Cloud分布式最为核心和最为基础的模块,

他的作用是注册和发现Spring Boot服务,并提供监控管理功能。

每一个微服务都可以像服务治理中心注册多个节点(服务名称相同,更改端口号 在启动一次即可)

很多时候 我们也希望服务治理中心也是多个节点,这才可能满足高可用和负载均衡的要求

解决办法: 我们可以采用服务治理中心互相注册来保持相互监控

服务治理中心名称保持不变,将当前的服务治理中心节点A注册到服务治理中心节点B,然后将服务治理中心节点B注册到服务治理中心节点A。

Eureka心跳机制

微服务客户端之所以可以和Eureka保持联系,依靠的是心跳机制,也就是说你客户端可以自己来进行心跳的配置处理。

如果最大心跳时间间隔微服务没有进行心跳(如配置2s心跳心跳一次 最大心跳时间间隔5s),则因为该微服务已经死宕机了(Eureka会默认出现红字提醒)

微服务之间的调用

Rabbion实际上是一个RestTemplate对象。

通过注解@LoadBalance 可以让RestTemplete实现负载均衡,也就是通过这个restTemplete对象调用用户微服务请求的时候,Ribbon会自动给用户微服务实现负载均衡,请求会被分摊到微服务的各个节点上。

Feign声明式调用。

使用restTemplete对象调用除了编写URL,还需要注意这些参数的组装和结果的返回操作。为了克服这些不友好,Spring Cloud提供了声明式调用组件Feign。

Feign是一个基于接口的编程方式,开发者只需要声明接口和配置注解,在调度接口方法时,Spring Cloud就根据配置来调度对应的REST风格的请求。

断路器—Hystrix

在互联网中,某一个微服务可能出现故障,为了不蔓延到其他微服务上面导致雪崩效应。断路器会将产生故障的服务节点进行"熔断",保持各个微服务持续可用。

处理熔断的方式有 限流、缓存、服务降级,下面介绍服务降级。

所谓降级服务,就是当请求发生超时或者发生故障时,就会使用自身服务的其他方法进行相应。

对于Hystrix,Spring Cloud还提供了一个仪表盘进行监控短路的情况。

路由网关Zuul

网关的功能对分布式网站十分重要,首先他可以将请求路由到真是服务器的IP地址,避免直接的攻击真实服务器

其次它也可以作为一种负载均衡的手段,使请求按照一定的算法平摊到多个节点上,减缓单点的压力。

类似Nginx的反向代理和负载均衡

SpringCloud Stream

Spring Boot之中为了方便开发者,已经整合了消息组件,也提供了有一系列的处理支持。如果按照这样的方式在Spring Cloud之中进行消息处理,有些人会认为比较麻烦。

所以在Spring Cloud里面将消息整合的处理操作进行了进一步的抽象操作,实现了更加简化的消息处理。

简单总结:SpringCloud Stream就是实现了MDB功能,同时可以增加更加简化方便的整合消息组件。

Docker

几乎每个有趣的应用都至少有一个类似数据库或者消息中间件的基础设施服务,我们可以选择把这些基础设施服务安装在自己的机器上。

不幸的是安装起来并不容易,就比如说之前在window上安装mysql各种问题。如果有一键安装的配置就完美了,并且我们并不喜欢在自己的机器上装满各种乱七八糟的服务。

因此我们要用docker容器,docker将作为一个容器运行我们需要的所有的服务。(Nginx Mq Redis Mysql 等等等等)

Docker几个重要的概念

镜像

一般情况下,我们首先需要将程序打包到Docker镜像中,随后才能将镜像交给其他人使用。

容器

当我们获取到Docker镜像以后,可以随时运行该Docker镜像,此时变会启动一个Docker容器,该容器将运行镜像中封装的程序

如果我们把Docker镜像理解为JAVA类的话,那么Docker容器就相当于Java实列。

仓库

集中存放镜像文件的地方(可以理解为GitHub这样的托管服务器)

Jenkins

我们使用Git管理代码,使用Maven构建项目,使用Docker封装服务,这些事情都需要通过手工方式一步一步的完成,能否让这些步骤自动的去执行呢?

也就是说开发人员将源代码推送到Git远程仓库,自动进行Maven构建,并自动将构建生成的程序包放入Docker容器中。

原文地址:https://www.cnblogs.com/ssskkk/p/9813986.html

时间: 2024-08-05 02:33:36

聊聊分布式开发 Spring Cloud的相关文章

在阿里云容器服务上开发基于Docker的Spring Cloud微服务应用

本文为阿里云容器服务Spring Cloud应用开发系列文章的第一篇. 一.在阿里云容器服务上开发Spring Cloud微服务应用(本文) 二.部署Spring Cloud应用示例 三.服务发现 四.服务间通信与集成 五.服务智能路由 六.集中配置管理 七.高可用和容错 八.监控和日志 九.服务的部署和发布策略 微服务概述 单体应用通常指在一个程序中满足多个业务或技术领域的需求,不同的需求领域内化为模块.假定我们要开发一个Web应用,通常的MVC模式可以满足要求.针对不同领域有不少代码生成工具

Spring Cloud服务的注册与发现

Spring Cloud简介: Spring Cloud为开发人员提供了快速构建分布式系统中的一些通用模式(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式 会话,群集状态). 分布式系统的协调导致了锅炉板模式,并且使用Spring Cloud开发人员可以快速地站起来实现这些模式的服务和应用程序. 它们可以在任何分布式环境中正常工作,包括开发人员自己的笔记本电脑,裸机数据中心和受管平台,如Cloud Foundry. Spring Cloud的特性

SpringCloud分布式开发五大神兽

SpringCloud分布式开发五大神兽 服务发现--Netflix Eureka 客服端负载均衡--Netflix Ribbon 断路器--Netflix Hystrix 服务网关--Netflix Zuul 分布式配置--Spring Cloud Config Eureka 一个RESTful服务,用来定位运行在AWS地区(Region)中的中间层服务.由两个组件组成:Eureka服务器和Eureka客户端.Eureka服务器用作服务注册服务器.Eureka客户端是一个java客户端,用来简

Spring Cloud 概述

1. Spring Cloud 引言 首先我们打开spring 的官网:https://spring.io/ 我们会看到这样一张图片 这个图片告诉我们,开发我们的应用程序就像盖楼一样, 首先我们需要搭建Spring Boot, 在此基础上可以搭建Spring Cloud,再往上面可以搭建Spring Cloud Data Flow 2.Spring Cloud 概述 协调:分布式系统简化 构建分布式系统不需要很复杂且容易出错. Spring Cloud为最常见的分布式系统模式提供了简单易用的编程

SpringCloud分布式开发理解

谈到SpringCloud最新接触到的可能就是那五大"神兽",之前最先接触分布式开发是通过dubbo的RPC远程过程调用,而dubbo给我得感觉就是:虽然所有的主机物理上分布了,但是对于用户而言就仿佛是一个整体.而对我们的java开发人员而言,分布式开发的意义又是什么呢?也就是说哪里需要去使用分布式开发呢,其实在任何一个项目里面(MVC设计模式),业务操作是最为核心的部分,而所有项目之中你的业务操作是否完成直接决定了你的项目本身是否健壮.之前太年轻...一直感觉业务对一个追求技术培养得

spring cloud之服务发现和均衡负载

一.认识 1. Monolith(单体应用)架构 在编译时,这些项目将被打包成为一个个JAR包,并最终合并在一起形成一个WAR包. 最终部署的时候只有一份war包,其他的以jar包的方式依赖来. 缺点:在项目很小的情况下这种单体应用比较简单,但是随着项目越变越大,代码越来越多.就会存在以下缺点. ①编译难,部署难,测试难    ②技术选择难    ③扩展难 单体应用中多个模块的负载不均衡,我们扩容高负载的时候,也把低负载的模块也扩容,极大浪费了资源. 2.MicroService(微服务)架构

Spring Cloud微服务架构升级总结

↵ [编者的话]微服务的概念源于 2014 年 3 月 Martin Fowler 所写的一篇文章“Microservices”.文中内容提到:微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调.互相配合,为用户提供最终价值. 背景 应用系统的架构历史 什么是微服务? 起源:微服务的概念源于2014年3月Martin Fowler所写的一篇文章“Microservices”.文中内容提到:微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互

Spring Cloud 功能使用的层面组件(一)

来源:赤峰seo 实际上,Spring Cloud 是一个全家桶式的技术栈,它包含了很多组件.本文先从最核心的几个组件,也就是 Eureka.Ribbon.Feign.Hystrix.Zuul 入手 不过大多数讲解还停留在对 Spring Cloud 功能使用的层面,其底层的很多原理,很多人可能并不知晓. 因此本文将通过大量的手绘图,给大家谈谈 Spring Cloud 微服务架构的底层原理. 实际上,Spring Cloud 是一个全家桶式的技术栈,它包含了很多组件.本文先从最核心的几个组件,

从 Spring 的环境到 Spring Cloud 的配置

需求 不知不觉,web 开发已经进入 “微服务”.”分布式” 的时代,致力于提供通用 Java 开发解决方案的 Spring 自然不甘人后,提出了 Spring Cloud 来扩大 Spring 在微服务方面的影响,也取得了市场的认可,在我们的业务中也有应用. 前些天,我在一个需求中也遇到了 spring cloud 的相关问题.我们在用的是 Spring Cloud 的 config 模块,它是用来支持分布式配置的,原来单机配置在使用了 Spring Cloud 之后,可以支持第三方存储配置和