SpringCloud微服务

微服务架构:微服务是系统架构上的一种设计风格,它的主旨是将一个本来独立的系统拆分红多个小型服务,这些小型服务都在各自独立的进程中进行,服务之间经过基于HTTP的RESTful API进行通讯协做。被拆分的每个小型服务都围绕着系统中的某一项或一些耦合度较高的业务功能进行构建,而且每一个服务都维护着自身的数据存储、业务开发、自动化测试案例以及独立部署机制。因为有了轻量级的通讯协做基础,因此这些微服务可使用不一样的语言来编写。
微服务架构的九大特征:
  一、服务组件化
      组件:是一个能够独立更换和升级的单元,而不影响其余单元
  二、按业务组织团队
      按业务线的方式进行拆分
  三、作“产品”的态度
      每一个小团队对其产品的整个生命周期负责,而不是以项目的模式,已完成开发与交付并将成果交接给维护者以最终目标
  四、智能端点与哑管道
      在单体应用中,组件间经过函数调用的方式进行交互协做,而在微服务架构中,因为服务不在一个进程中,组件间的通讯模式发生了改变,若仅仅将本来在进程内的方法调用改
   成rpc方式的调用,会致使微服务之间产生繁琐的通讯,使得系统表现更为糟糕,因此咱们须要更粗粒度的通讯协议
      (1)使用HTTP的RESTful API或轻量级的消息发送协议,实现信息传递与服务调用的触发
      (2)经过在轻量级消息总线上传递消息,相似RabbitMQ等一些提供可靠异步交换的中间件
  五、去中心化治理
  六、去中心化管理数据
      让每个服务来管理其自有的数据库
  七、基础设施自动化
  八、容错设计
  九、演进式设计
 
springboot 用于构建微服务的基础框架
 
高可用:
  高度可用性,用平均故障时间MTTF来度量,即计算机系统平均可以正常运行多长时间,才发生一次故障。
服务注册:
  在服务治理框架中,一般都会构建一个服务注册中心,每一个服务单元向注册中心提供的服务,将主机与端口号,版本号,通讯协议等一些附加信息告知注册中心,注册中心按服务名分类组织服务清单。
 
服务发现:
  因为在服务治理框架下运行,服务间的调用再也不经过指定具体的实例地址来实现,而是经过向服务名发起请求调用实现。因此,服务调用方在调用服务提供方接口的时候,并不知道具体的服务实例位置。所以,调用方须要向服务注册中心咨询服务,并获取全部服务的实例清单, 以实现对具体服务实例的访问。
 
高可用服务注册中心:
  实际上就是将本身做为服务向其余服务注册中心注册本身,这样就能够造成一组互相注册的服务注册中心,以实现服务清单的同步,达到高可用的效果。
 
服务发现与消费:
  服务发现的任务由Eureka客户端来完成,而服务消费的任务由Ribbon完成,Ribbon是一个基于HTTP和TCP的客户端负载均衡器,它能够在经过客户端中配置的
  RibbonServerList服务端列表去轮询访问以达到负载均衡的做用。当Ribbon与Eureka联合使用时,Ribbon的服务实例清单 RibbonServerList会被DiscovEnableNIWServerList
 
Spring Cloud五大核心组件:
  1、Eureka:服务注册中心,维护一个注册表,包含了各个服务所在机器的ip地址和端口号
  2、Feign:使用@FeignClient注解在服务上声明实际调用的服务,Feign Client会在底层根据你的注解,使用动态代理跟你指定的服务创建链接、构造请求、发起靕求、
    获取响应、解析响应,等等
  3、Ribbon:提供了客户端对服务调用的负载均衡,使用Round Robin轮询算法
  4、Hystrix:Hystrix是隔离、熔断以及降级的一个框架
  5、Zuul:为微服务应用程序提供服务路由功能。Zuul是代理服务请求的服务网关
 
  参考:
  

  Eureka:各个服务启动时,Eureka Client都会将服务注册到Eureka Server,而且Eureka Client还能够反过来从Eureka Server拉取注册表,从而知道其余服务在哪里前端

  Ribbon:服务间发起请求的时候,基于Ribbon作负载均衡,从一个服务的多台机器中选择一台算法

  Feign:基于Feign的动态代理机制,根据注解和选择的机器,拼接请求URL地址,发起请求spring

  Hystrix:发起请求是经过Hystrix的线程池来走的,不一样的服务走不一样的线程池,实现了不一样服务调用的隔离,避免了服务雪崩的问题数据库

  Zuul:若是前端、移动端要调用后端系统,统一从Zuul网关进入,由Zuul网关转发请求给对应的服务后端

相关文章
相关标签/搜索