asp.net core microservices 架构之eureka服务发现

一 简介                                                     

  微服务将需多的功能拆分为许多的轻量级的子应用,这些子应用相互调度。好处就是轻量级,完全符合了敏捷开发的精神。我们知道ut(单元测试),不仅仅提高我们的程序的健壮性,而且可以强制将类和方法的设计尽量的单一化。那么微服务也是这样,敏捷对于软件工程的意义就是快速开发,验证市场需求,然后快速改进,从而适应市场节奏。什么东西要快速,就必须轻量级。大家知道一个应用的复杂程度,完全是和这个项目的功能和代码数量挂钩的,这是软件自诞生就存在的问题,一个设计不好的软件,最后会让这个软件更新和改进变的非常复杂,直至没有人敢去碰这个应用,我一直认为这个代码量和复杂程度挂钩,困难程度是以指数的量增加的,而不仅仅是线性增加。这就需要一个好的设计去解决问题,一个微服务尽量的单一,与其他子应用几乎没有代码上的关联,所以可以快速出原型,快速开发,验证市场,也可以快速砍掉一个项目,而不影响其他的应用。

  当然,因为微服务有他的局限性,所以也有它的坏处,比如一致性会打折扣,对于一致性的问题,我前几篇文章已经做过探讨。还有就是虽然软件开发部署工作解脱了,但是您想,原来一个应用,现在三四个应用进行协调和通讯,对于这个分布式架构的要求就会高,如何把他们打散又要弱关联在一起,那么eureka诞生了。asp.net core支持一个底层的库,Microsoft.Extensions.Http.Polly,这个库是表达策略,例如以流畅且线程安全的方式处理重试、断路器、超时、Bulkhead 隔离和回退,就是防止雪崩,熔断降级等特性。感兴趣的可以看asp.net core 官方文档: https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/http-requests?view=aspnetcore-2.2#use-polly-based-handlers 。多说一句,asp.net core也有后台服务job的底层api,有兴趣的可以试着做出一套asp.net core的job框架。甚至服务发现,配合zookeeper,也可以开发出一套属于asp.net core的框架。

  言归正传,这里还需要注意的是一点是,一个微服务是可以和以前的比如面向传统服务类型的应用共存的,如果公司内部可以提出一个应用作为微服务来设计,那么我恭喜你,从泥潭中跨出了一步,如果你们公司全部用微服务设计了,那么真的恭喜,完全跳出了泥潭。当然一些重量级的应用,因为必须使用分布式事务等等的特殊要求,还是可以存在,微服务还是需要根据实际情况来实施的。

二 eureka集成                                                           

  说到eureka前,我们需要明白一个术语:backing service。我把他翻译为协助服务,或者帮助服务。主要意思就是对资源具有管理,丢失处理,连接和配置等功能的一个程序。那微服务资源自然就是我们各种各样的服务,如图所示:

asp.net core microservices 架构之eureka服务发现

当然除过eureka,还有etcd,Consul,Marathon,ZooKeeper可以供大家挑选。

使用docker运行eureka服务器端:

docker run -p 8081:8080 -d --name eureka \ -d netflixoss/eureka:1.3.1

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpsydd.html