再看Spring Could微服务的关键组件
Consul是用go开发的开源注册中心服务,内置服务发现与注册、raft一致性协议实现、健康检查、多数据中心等方案。与Eurker相比,consul还能对异构服务如rpc提供支持。
作为微服务系统的核心组件,一旦consul挂掉,所有服务都将停止,因此生产环境中必须要用Consul高可用集群。在Consul集群中有server、client两种角色,集群状态信息都存在server节点,client角色是无状态的,它只是代理转发rpc请求到sever节点,起到缓冲的作用,从而减少server节点数量(server节点越多,达成共识、节点间同步代价越高,一般建议3-5台)。Consul通过集群设计,Raft选举算法,Gossip协议等机制来确保Consul服务的稳定与高可用,如果需要更高的容灾机制,可通过设计双数据中心异地搭建两个Consul数据中心,组成一个异地灾备Consul服务集群。
ConfigServer配置中心是对微服务应用配置管理的服务,如数据库、端口配置等,与Consul一样是一个重要的独立服务组件,所有的微服务应用都要调其服务获取配置信息。随着微服务配置越来越多,如何管好这些配置及它们的更新策略,搭建ConfigServer集群也是保证微服务体系稳定的重要方面。这样的关键组件应该搭建独立的集群、部署在物理机而不是容器里。因为ConfigServer主要是http配置文件访问服务,不涉及节点选举、一致性同步操作,可以按传统方式搭建高可用配置中心。可以单独通过git来管理应用配置文件,ConfigServer通过网关拉取git仓库的配置供服务获取就可以了。
与传统方案通过Nginx做负责均衡方案不同,Spring Could中微服务间调用的负载均衡默认是服务消费端通过Robbin代理实现的客户端负载均衡,同样的服务熔断、限流等机制也是基于Hystrix在消费端实现的,这都需要在消费端进程内部通过代码的方式实现,对消费端存在一定的代码侵入性,这也是后面出现Service Mesh(服务网格)概念的原因之一。
基于Spring Could的微服务体系,通过集成各种开源组件为整个体系服务支持,但在负载均衡、熔断、流控等方面需要对消费端业务进程侵入,于是出现了Service Mesh,其基本思路是通过主机独立的Proxy进行的部署来解耦业务系统流程,Proxy除了负责服务发现和负责均衡外,还负责动态路由、容错限流、监控度量和安全日志等功能。
基于 Spring Cloud 的微服务架构演变史?
再看Spring Could微服务的关键组件的更多相关文章
- spring cloud微服务实践七
在spring cloud 2.x以后,由于zuul一直停滞在1.x版本,所以spring官方就自己开发了一个项目 Spring Cloud Gateway.作为spring cloud微服务的网关组 ...
- spring cloud微服务实践二
在上一篇,我们已经搭建了spring cloud微服务中的注册中心.但只有一个注册中心还远远不够. 接下来我们就来尝试提供服务. 注:这一个系列的开发环境版本为 java1.8, spring boo ...
- 【原创】Docker容器及Spring Boot微服务应用
Docker容器及Spring Boot微服务应用 1 什么是Docker 1.1 Docker的出现 问题一:项目实施环境复杂问题 传统项目实施过程中经常会出现“程序在我这跑得好好的,在你那怎么就不 ...
- Spring Cloud微服务系列文,服务调用框架Feign
之前博文的案例中,我们是通过RestTemplate来调用服务,而Feign框架则在此基础上做了一层封装,比如,可以通过注解等方式来绑定参数,或者以声明的方式来指定请求返回类型是JSON. 这种 ...
- Spring Cloud 微服务
https://mp.weixin.qq.com/s?__biz=MzU0OTE4MzYzMw==&mid=2247486301&idx=2&sn=f6d45860269b61 ...
- 放弃Dubbo,选择最流行的Spring Cloud微服务架构实践与经验总结
http://developer.51cto.com/art/201710/554633.htm Spring Cloud 在国内中小型公司能用起来吗?从 2016 年初一直到现在,我们在这条路上已经 ...
- Spring Cloud 微服务的那点事
什么是微服务 微服务的概念源于2014年3月Martin Fowler所写的一篇文章“Microservices”. 微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调 ...
- 全链路实践Spring Cloud 微服务架构
Spring Cloud 微服务架构全链路实践Spring Cloud 微服务架构全链路实践 阅读目录: 网关请求流程 Eureka 服务治理 Config 配置中心 Hystrix 监控 服务调用链 ...
- Spring Cloud微服务Sentinel+Apollo限流、熔断实战总结
在Spring Cloud微服务体系中,由于限流熔断组件Hystrix开源版本不在维护,因此国内不少有类似需求的公司已经将眼光转向阿里开源的Sentinel框架.而以下要介绍的正是作者最近两个月的真实 ...
随机推荐
- Hopper Disassembler v4 ( The macOS Disassembler, Decompiler and Debugger)
Hopper Disassembler v4 ( The macOS Disassembler, Decompiler and Debugger) Reveal13 (UI) 两个好东西..不知道的自 ...
- LabView和DLL中的参数问题
注意:在LabView中调用DLL函数时,一定要指定对应的参数类型,而不是选择“Adapt to Type”,否则会出错,不知道为什么书上是要选择“Adapt to Type”. 以下做个参考: 转自 ...
- oracle 11g 数据库中报:协议适配器错误
本人遇到该问题,到数据库服务器上重新启动监听和实例就OK了.
- 数据导入(一):Hive On HBase
Hive集成HBase可以有效利用HBase数据库的存储特性,如行更新和列索引等.在集成的过程中注意维持HBase jar包的一致性.Hive与HBase的整合功能的实现是利用两者本身对外的API接口 ...
- 学习mybatis-3 step by step 篇一
一.搭建简单mybatis-3环境(详细的中文文档) 集成开发环境:IDEA 项目:maven + mybatis-3 1.创建maven结构项目 含简单,如下图: 下一步后,填写groupid和ar ...
- sudo环境变量问题;程序库函数寻找
1. sudo 和 root不完全等效,继承的环境变量不一样,最主要的区别还是输入的密码不同. 2. 使用sudo去执行一个程序时,出于安全的考虑,这个程序将在一个新的.最小化的环境中执行,也就是说, ...
- VuePress从零开始搭建自己的博客
VuePress是什么? VuePress是以Vue驱动的静态网站生成器,是一个由Vue.Vue Router和webpack驱动的单页应用.在VuePress中,你可以使用Markdown编写文档, ...
- RxJava和RxAndroid
现在RxJava和RxAndroid越来越火爆,自己在业余时间也学习了一下,感觉确实很好用,之前 为了完成页面刷新,数据请求,组件信息传递的时候,要使用handler,真的是逻辑思路很强,稍微不注意, ...
- H5 canvas控制坦克移动
接着上一篇(http://www.cnblogs.com/zhouhuan/p/H5_tankgame.html),这一篇研究一下怎么响应玩家的操作让坦克进行相应的移动. 1. 了解keydown ...
- Eclipse开发Android应用 找不到平板
1.驱动安装正确2.平板的连接方式正确,不要用大容量存储/sd卡模式这个设置在4.3上很难找呀.设置->存储->点右上角的菜单 3.打开USB调试.4.上述问题都检查后,在eclipse里 ...