目录
2.服务注册和发现是什么意思?Spring Cloud如何实现?
使用SpringBoot开发分布式微服务时,我们面临以下问题:
? ? 与分布式系统相关的复杂性,这种开销包括网络问题,延时开销,宽带问题,安全问题。
? ?服务发现,服务发现工具管理集群中的流程和服务如何查找和互相交谈。他设计一个服务目录,在该目录中注册服务,然后能够查找并连接到该目录中的服务。
冗余,分布式系统中的冗余问题。
负载均衡,负载平衡改善跨多个计算资源的工作负荷,诸如计算机集群,网络链路,中央处理单元,或磁盘驱动器的分布。
性能问题,由于各种运营开销导致的性能问题。
部署复杂性,Devops技能的要求。
当我们开始一个项目时,我们通常在属性文件中进行所有的配置。随着越来越多的服务开发和部署,添加和修改这些属性变得更加复杂。有些服务可能会下降,而偶写位置可能会发生变化。手动更改属性可能会产生问题。
Eureka服务注册和发现可以在这种情况下提供帮助。由于所有服务都在Eureka服务器上注册并通过调用Eureka服务器完成查找,因此无需处理服务地点的任何更改和处理。
1.服务发现,Netflix? Eureka一个RestFul服务,用来定位运行在AWS地区(Region)中的中间层服务。由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务端用作服务注册服务器。Eureka客户端是一个java客户端,用来简化与服务器的交互,作为轮询负载均衡器,并提供服务的故障切换支持。Netflix在其生产环境中使用的是另外的客户端,他提供基于流量,资源利用率以及出错状态的加权负载均衡。
2.客服端负载均衡,Netflix Ribbon Ribbon,主要提供客户侧的软件负载均衡算法。Ribbon客户端组件提供一系列完善的配置选项,比如连接超时,重试,重试算法等。Ribbon内置可插拔,可定制的负载均衡组件。
3.断路器,Netflix? Hystrix断路器可以防止一个应用程序多次试图执行一个操作,即很可能失败,允许他继续而不等待故障恢复或者浪费CPU周期,而他确定该故障时持久的。断路器模式也使用应用程序能够检测故障是否已经解决。如果问题似乎已经得到纠正,应用程序可以尝试调用操作。
4.微服务网关,Netflix? Zuul类似Nginx,反向代理的功能,不过netflix自己增加了一些配合其他组件的特性。
5.分布式配置,Spring? Cloud? Config这个还是静态的,得配合Spring? Cloud Bus实现动态的配置更新。
优点:每一个服务组否内聚,代码容易理解;开发效率提高,一个服务只做一件事;微服务能够被小团队单独开发;微服务是松耦合的,是由功能意义的服务可以用不同的语言开发,面向接口编程;易于与第三方集成;微服务只是业务逻辑的代码,不会和HTML,CSS或者其他界面组合;可以灵活搭配,连接公共库/连接独立库。
缺点:分布式系统的负责性;多服务运维难度,随着服务的增加,运维的压力也在增大;系统部署依赖;服务间通信成本;数据一致性;;系统集成测试;性能监控;
当Eureka? ?Server节点在短时间内丢失了过多实例的连接时(比如网络故障或频繁的启动关闭客户端),那么这个节点就会进入自我保护模式,一旦进入到该模式,Euraka? Server就会保护服务注册表中的信息,不会删除服务注册表中的数据(即不会注销任何微服务)。当网络故障恢复后,该Euraka? server节点就会自动退出自我保护模式。