从零开始学习SpringCloud

个人博客传送门


前段时间把SpringBoot刷了一遍,感觉是时候深入研究一下微服务架构了,在网上看到了方志鹏的书,觉得不错便关注了他的博客,由于前期一直关注微笑并且跟着微笑的达人课完成了SpringBoot的入门,因此在此感谢两位大佬,令附上两位大佬的博客地址。springboot的入门

我将springcloud处理微服务架构分为下面的模块进行慢慢的蚕食:

  1. 服务的注册和发现
  2. 断路器
  3. 服务调用
  4. 路由网关
  5. 分布式配置中心
  6. 消息总线
  7. 服务链路追踪

未完待续中。。。

附上我的github地址,从零开始学习springcloud
以下是我自己对上述模块的认识和分析:

  1. 在服务的注册和发现和调用之间有三个模块:
  • 注册中心
  • 服务提供者
  • 服务消费者
  1. 对服务的调用:
  • ribbon + resttmplate 是客户端的一种负载均衡的方式
  • feign :原理也是基于ribbon实现的。只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。
  1. 断路器:为了保证服务的高可用,引入了断路器的概念,当访问一个服务的不可用得到了一定的阈值时,断路器将会被打开两种实现:
  • restTemplate 和 ribbon 方式,需要在调用的服务上增加熔断的方法即可
  • feign,需要在接口的FeignClient注解中增加callback方法即可,指向该接口的实现类,该实现类中重写的方法即出现断路时调用的方法。
  1. 路由网关(zuul):主要做的是路由的转发和过滤,zuul默认和Ribbon结合实现了负载均衡的功能。
  • 路由的转发,类似于nigix反向代理,将对应的路径代理到对应的服务器上去
  • 路由的过滤,通过自定义过滤器,然后继承zuulfilter来自定义过滤的类型和优先级和逻辑等 ;
  1. 分布式配置中心(Configure):在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件
  • 分为两个角色:分别是配置的服务器和配置的客户端
  • 延伸到微服务可以将配置中心做成一个微服务,并且将其集群    
  1. 消息总线(Bus):消息总线将分布式的节点用轻量的消息代理连接起来,它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控主要是rabbitmq的用法
  2. 服务链路追踪(Sleuth):在分布式系统中提供追踪解决方案

对于微服务架构,启动的时候会启动一个Trace,一系列spans组成的一个树状结构
在访问的时候会跟随目前访问的位置和所用的时间,可以快速的反应和查找问题
ZipkinServer ==》用来收集调用信息

  1. docker部署springcloud项目
  2. 服务注册(consul):它是一个提供服务发现和配置的工具,consul具有分布式、高可用、高扩展性。
    在这里插入图片描述
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐