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. foo、bar美国版的张三李四

    不管看javascript还是其他语言举例,经常看到使用foo和bar来充当变量.那么究竟foo.bar是什么鬼? 一说:foo 和 bar 组合在一起所构成的 foobar 应该最能反映其原始的意思 ...

  2. 20162314 《Program Design & Data Structures》Learning Summary Of The Eleventh Week

    20162314 2017-2018-1 <Program Design & Data Structures>Learning Summary Of The Eleventh We ...

  3. ubuntu 18.04 64bit build tensorflow report error:C++ compilation of rule '//tensorflow/core/kernels:broadcast_to_op' failed (Exit 4)

    注意:笔者未能在Ubuntu18.04 64bit下成功从源码编译cpu版本的tensorflow Ans: 1.You are likely running out of memory. Try r ...

  4. WebApi Session支持

    代码: WebApiConfig using System; using System.Collections.Generic; using System.Linq; using System.Net ...

  5. mysql Alter 的问题

    转自:https://blog.csdn.net/c_enhui/article/details/50903351 -- 设置或删除列的默认值.该操作会直接修改.frm文件而不涉及表数据. 此操作很快 ...

  6. javascript debugger

    打开调试工具,刷新,可以看到脚本被暂停 <!DOCTYPE html> <html> <head> <meta charset="utf-8&quo ...

  7. Java中的String和StringBuffer

    在任何编程语言中,字符串都是我们编写程序时不可避免要用到的常用的数据类型之一. 对于Java初学者而言,当谈到String和StringBuffer的区别时,通常都会有些困惑. 而要弄清楚两者之间的区 ...

  8. 代码注释,神兽护体,代码无bug

    /** * * ━━━━━━神兽出没━━━━━━ * ┏┓ ┏┓ * ┏┛┻━━━┛┻┓ * ┃ ┃ * ┃ ━ ┃ * ┃ ┳┛ ┗┳ ┃ * ┃ ┃ * ┃ ┻ ┃ * ┃ ┃ * ┗━┓ ┏━┛ ...

  9. H5 canvas建造敌人坦克

      接着上一篇(http://www.cnblogs.com/zhouhuan/p/H5_tankgame3.html),这一篇建造敌人的坦克. 思路是,基于可扩展性和性能等方面的考虑,用构造函数改造 ...

  10. 基于Oracle的SQL优化(崔华著)-整理笔记-第2章“Oracle里的执行计划”

    详细介绍了Oracle数据里与执行计划有关的各个方面的内容,包括执行计划的含义,加何查看执行计划,如何得到目标SQL真实的执行计划,如何查看执行计划的执行顺序,Oracle数据库里各种常见的执行计划的 ...