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微服务的关键组件的更多相关文章

  1. spring cloud微服务实践七

    在spring cloud 2.x以后,由于zuul一直停滞在1.x版本,所以spring官方就自己开发了一个项目 Spring Cloud Gateway.作为spring cloud微服务的网关组 ...

  2. spring cloud微服务实践二

    在上一篇,我们已经搭建了spring cloud微服务中的注册中心.但只有一个注册中心还远远不够. 接下来我们就来尝试提供服务. 注:这一个系列的开发环境版本为 java1.8, spring boo ...

  3. 【原创】Docker容器及Spring Boot微服务应用

    Docker容器及Spring Boot微服务应用 1 什么是Docker 1.1 Docker的出现 问题一:项目实施环境复杂问题 传统项目实施过程中经常会出现“程序在我这跑得好好的,在你那怎么就不 ...

  4. Spring Cloud微服务系列文,服务调用框架Feign

    之前博文的案例中,我们是通过RestTemplate来调用服务,而Feign框架则在此基础上做了一层封装,比如,可以通过注解等方式来绑定参数,或者以声明的方式来指定请求返回类型是JSON.    这种 ...

  5. Spring Cloud 微服务

    https://mp.weixin.qq.com/s?__biz=MzU0OTE4MzYzMw==&mid=2247486301&idx=2&sn=f6d45860269b61 ...

  6. 放弃Dubbo,选择最流行的Spring Cloud微服务架构实践与经验总结

    http://developer.51cto.com/art/201710/554633.htm Spring Cloud 在国内中小型公司能用起来吗?从 2016 年初一直到现在,我们在这条路上已经 ...

  7. Spring Cloud 微服务的那点事

    什么是微服务 微服务的概念源于2014年3月Martin Fowler所写的一篇文章“Microservices”. 微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调 ...

  8. 全链路实践Spring Cloud 微服务架构

    Spring Cloud 微服务架构全链路实践Spring Cloud 微服务架构全链路实践 阅读目录: 网关请求流程 Eureka 服务治理 Config 配置中心 Hystrix 监控 服务调用链 ...

  9. Spring Cloud微服务Sentinel+Apollo限流、熔断实战总结

    在Spring Cloud微服务体系中,由于限流熔断组件Hystrix开源版本不在维护,因此国内不少有类似需求的公司已经将眼光转向阿里开源的Sentinel框架.而以下要介绍的正是作者最近两个月的真实 ...

随机推荐

  1. Hopper Disassembler v4 ( The macOS Disassembler, Decompiler and Debugger)

    Hopper Disassembler v4 ( The macOS Disassembler, Decompiler and Debugger) Reveal13 (UI) 两个好东西..不知道的自 ...

  2. LabView和DLL中的参数问题

    注意:在LabView中调用DLL函数时,一定要指定对应的参数类型,而不是选择“Adapt to Type”,否则会出错,不知道为什么书上是要选择“Adapt to Type”. 以下做个参考: 转自 ...

  3. oracle 11g 数据库中报:协议适配器错误

    本人遇到该问题,到数据库服务器上重新启动监听和实例就OK了.

  4. 数据导入(一):Hive On HBase

    Hive集成HBase可以有效利用HBase数据库的存储特性,如行更新和列索引等.在集成的过程中注意维持HBase jar包的一致性.Hive与HBase的整合功能的实现是利用两者本身对外的API接口 ...

  5. 学习mybatis-3 step by step 篇一

    一.搭建简单mybatis-3环境(详细的中文文档) 集成开发环境:IDEA 项目:maven + mybatis-3 1.创建maven结构项目 含简单,如下图: 下一步后,填写groupid和ar ...

  6. sudo环境变量问题;程序库函数寻找

    1. sudo 和 root不完全等效,继承的环境变量不一样,最主要的区别还是输入的密码不同. 2. 使用sudo去执行一个程序时,出于安全的考虑,这个程序将在一个新的.最小化的环境中执行,也就是说, ...

  7. VuePress从零开始搭建自己的博客

    VuePress是什么? VuePress是以Vue驱动的静态网站生成器,是一个由Vue.Vue Router和webpack驱动的单页应用.在VuePress中,你可以使用Markdown编写文档, ...

  8. RxJava和RxAndroid

    现在RxJava和RxAndroid越来越火爆,自己在业余时间也学习了一下,感觉确实很好用,之前 为了完成页面刷新,数据请求,组件信息传递的时候,要使用handler,真的是逻辑思路很强,稍微不注意, ...

  9. H5 canvas控制坦克移动

    接着上一篇(http://www.cnblogs.com/zhouhuan/p/H5_tankgame.html),这一篇研究一下怎么响应玩家的操作让坦克进行相应的移动.   1. 了解keydown ...

  10. Eclipse开发Android应用 找不到平板

    1.驱动安装正确2.平板的连接方式正确,不要用大容量存储/sd卡模式这个设置在4.3上很难找呀.设置->存储->点右上角的菜单 3.打开USB调试.4.上述问题都检查后,在eclipse里 ...