前言随着微服务的普及,越来越多的公司使用微服务框架。微服务由于其高内聚和低耦合而提供更好的容错能力。也更能适应业务的快速迭代,给开发者带来很多便利。但是随着业务的发展,微服务的拆分越来越复杂,微服务的治理成为了一个让人头疼的问题。下面的场景相信大家或多或少都遇到过。场景1:发布是一件大事。每发布一次,就会有一半的请求被打断,上游会继续调用离线节点,导致错误。发布过程中收到各种报错,也影响了用户体验。发布后,需要修复执行到一半的脏数据。以上场景,在新版本中依然没有问题。如果新版本出现问题,大量商家会直接带着问题请求新版本,轻则修复数据,重则影响用户体验,甚至造成资金损失。最后,我不得不把每次发布都安排在凌晨两三点。我很害怕,睡眠不足,痛苦难言。场景二:半夜某个服务节点出现异常,上游还在不停的调用,异常多,各种告警信息。被闹钟吵醒后直接在线修复有点困难。想保留场景又怕拖累整个应用,只好先重启。但这只是治标不治本,因为难以重现,无法有效定位。明天可能会再次被唤醒,继续重启。上面的场景还是基于一个比较完善的报警系统。如果没有完善的告警系统,严重的时候可能会因为单机异常而拖垮整个业务系统。场景三:公司业务发展壮大后,部门组织结构越来越复杂,微服务模块越来越多。我不知道是谁在调用已发布的服务,所以我不知道将服务下线是否安全。我的应用程序的界面是一个敏感界面。我只希望我授权的应用可以调用它,而不是直接从服务注册中心获取我的地址来调用,不过目前好像不行。以上三种场景确实是使用微服务后的痛点。这时,有人告诉你,我知道如何解决这些问题。我有丰富的经验,知道如何解决它们。你一定很开心。那就请高薪进来吧。真的很好。各种架构图、框架原理、框架修改点都非常清晰,功能确实很完善。最后评估一下当前系统的修改成本,需要搭建三套中间件服务器,增加4个中间件依赖,修改几万行代码和配置。“不好意思,业务还是很重要的,产品经理给的要求还没有完成,刚才说的场景没有那么痛,只是一些小问题,真的没事。””这时候EDAS告诉你,EDAS的微服务方案无需任何代码和配置修改,就可以完美解决上述三种场景的问题,你不激动吗?是的,你没错,只要你的应用开发好了近五年内基于SpringCloud或Dubbo,可以直接使用完整的EDAS微服务治理能力,无需修改任何代码和配置。为什么EDAS用户可以轻松发布传统版本?这个过程真的很容易出错。在传统发布过程中,服务提供者停止重启,服务消费者感知服务提供者节点停止,流程如下:1.服务发布前,消费者根据负载均衡规则调用服务提供者。业务正常2.服务商B需要发布新版本,先操作其中一个节点,先停止Java进程3.ser副停止过程分为主动注销和被动注销。主动注销是准实时的,被动注销时间由不同的注册中心决定,最坏情况下需要1分钟。如果应用正常停止,SpringCloud和Dubbo框架的ShutdownHook都能正常执行,这一步的耗时可以忽略不计。如果应用异常停止,比如直接使用kill-9停止,或者在构建Docker镜像时,Java应用不是No.一段时间后,由于心跳超时。4、服务注册中心通知消费者其中一个服务提供者节点已经下线。有推送和轮询两种方式。Push可以认为是准实时的,轮询时间由服务消费者的轮询间隔决定,最坏情况下需要1分钟。5、服务消费者刷新服务列表,感知服务提供者下线。这一步非常重要,对于Dubbo框架是不存在的,但是SpringCloud的负载均衡组件Ribbon默认刷新时间是30秒,最坏情况下需要30秒。6、服务消费者不再调用离线节点。从第2步到第6步的过程中,Eureka在最坏情况下耗时2分钟,Nacos在最坏情况下耗时50秒。这段时间可能请求有问题,所以release会有各种报错,也影响用户体验。发布后,需要在执行到一半的时候修复脏数据。最后,每次发布都得安排在凌晨两三点发布。我很害怕,睡眠不足,很痛苦。单词。为什么EDAS用户不需要修改数据在你的应用部署到EDAS之后,EDAS的无损离线功能在发布新版本时会自动进行以下增强。我们主要关注绿色部分的信息:1、应用发布前,会自动从注册中心注销该应用,并将该应用标记为下线。2、当收到服务消费者请求时,会先正常处理调用,通知服务消费者节点下线,服务消费者会立即将该节点从调用列表中删除。3、此后服务消费者不再调用离线节点。EDAS的无损下线功能,将原来的logout服务从stopprocess阶段改为prestop阶段logout服务,将原有的依赖推送到注册中心,让服务提供者直接通知消费者自己退出调用列表。离线感知时间大大缩短,从原来的分钟级到准实时,保证您的应用在离线状态下也能实现业务无损。金丝雀发布是对EDAS用户的额外保障。在正常的新版本发布场景下,请求到各个节点的流量默认是均匀分布的。假设有4个服务商,一个节点一发布新版本,25%的流量会打到新版本。如果新版本出现问题,将影响25%的在线流量,轻则修复数据,重则影响用户体验,甚至造成资金损失。EDAS提供的金丝雀发布功能支持EDAS用户在发布新版本前提前配置金丝雀规则,这样只有满足流量特性的流量才会被转移到新版本中,使得转移到新版本的流量可以得到精确控制,验证新版本。如图所示,EDAS用户可以在发布前配置金丝雀规则。以Dubbo为例,下图的配置表明,在调用com.alibaba.edas.demo.EchoService.echo(Stringstring)的流量中,只有参数为"helloworld"的流量才会被路由到新版本.在服务提供者向注册中心注册服务之前,EDAS已经将新版本对应的金丝雀规则推送给了服务消费者。服务消费者调用时,会根据金丝雀规则分析流量,与服务提供者列表中的元数据进行比对,选择正确的调用地址。除了上图所示的简单参数对比,EDAS还支持解析更复杂的结构进行规则配置。当然,如果某个场景只需要控制流量百分比就可以满足需求,EDAS用户也可以直接按比例灰度化。EDAS金丝雀版本将路由到新版本的流量从占节点总数的百分比更改为基于流量特征的控制。可以自由控制路由到新版本的流量,比如只将内测账号的流量路由到新版本,做到谨慎发布,大胆验证。所以,来EDAS轻松发布吧。为什么EDAS用户不需要半夜醒来重启机器开源框架可能会因为单点异常而宕机整个应用系统在微服务架构中,当服务商的应用实例异常,服务消费者无法及时察觉,会影响服务正常调用的质量,进而影响服务性能甚至消费者的可用性。在上面的示例场景中,系统包含4个应用程序A、B、C和D,其中应用程序A分别调用应用程序B、C和D。当应用B、C、D的部分实例异常时(如图,应用B、C、D分别识别出1个和2个异常实例),如果应用A无法感知,则部分调用会失败;如果业务代码写得不优雅,可能会影响应用A的性能甚至整个系统的可用性。离群实例的去除为业务系统的稳定性加了一把锁。为了保障应用的服务性能和可用性,EDAS支持检测应用实例的可用性,并进行动态调整以保证服务的成功调用,从而提高业务稳定性和服务质量。如下图,EDAS用户可以在控制台对应用A进行如下配置,保证应用A的稳定性。1.异常类型,网络异常指IOException,业务异常指返回值http状态码500在SpringCloud框架,Dubbo框架指的是返回值包含Exception。2、QPS下限。为了避免调用过少、随机性过大影响判断的准确性,可以设置QPS的下限。只有当QPS达到一定值时,才能进行异常值去除判断。默认为1,可配置为0。3.错误率下限。如果某个服务提供者的返回值错误率超过配置值,则判断为需要剔除。4.移除实例比例上限。为了避免移除过多的机器节点,导致剩余节点的流量过载,需要配置移除实例比例的上限。建议不要超过50%。5.恢复检测单位时间。离群节点的移除是暂时的。单位时间过去后,消费者端会检测到这个节点。如果节点已恢复,则将其放回节点中。如果连续移除节点,则移除所需的时间线性增加直到最大值。基于异常实例去除功能,EDAS用户不会因为单机异常而半夜醒来重启机器,先安心睡觉,反正业务也不会受到影响。醒来后,机位还在。您可以选择是使用保留的站点进行分析,还是直接重启。为什么EDAS用户对他们的服务有信心?服务查询一目了然。我们熟悉的zookeeper组件是没有服务查询接口的。Eureka和Nacos这两个注册中心虽然提供了基于web的控制台,但是在控制台上只能查询服务。IP、端口等基本信息。EDAS用户在使用服务查询时,不仅可以查询应用注册了哪些服务,对应的IP和端口是什么,还可以查询服务包含的具体方法和参数类型,直观的看到服务被其他应用程序和节点。订阅状态。无论部门组织多么复杂,微服务模块有多少,EDAS用户都可以清晰查询服务的调用状态,从而知道自己在做什么,在梳理服务依赖和评估影响时更有信心领域。精准控制服务调用的权限业务发展之后,服务也会遇到权限控制的需求。例如优惠券部门的一个应用,既有优惠券查询界面,也有优惠券发放界面。优惠券查询接口,公司内所有应用默认有调用权限;但优惠券发放接口仅授权给客服和运营部门的部分应用调用。如下图所示,EDAS用户可以管理自己的服务。这里以Dubbo为例。下图的配置表明,cartservice发布的com.alibaba.edas.demo.EchoService的addItemToCart方法只允许本应用调用。服务认证除了支持对指定接口添加认证规则外,还支持对整个应用添加认证规则,也支持根据调用方IP进行认证。精准的权限管理,让您更好地管理微服务调用的权限,保证业务合规,保障数据安全。使用EDAS微服务治理的成本真的很低。使用EDAS微服务治理的成本真的很低。您无需修改??任何代码和配置,直接部署应用即可享受完整的EDAS微服务治理能力。只要你的应用是最近五年内基于SpringCloud或Dubbo版本开发的,你就可以直接使用完整的EDAS微服务治理能力,快来体验吧!
