.net core 微服务系列之服务架构

微服务概念

何为微服务

微服务(Microservice)概念据说是在2012年出现,其一出现就对互联网行业产生了巨大影响,因为其理念刚好符合“分而治之”的思想,在日益巨大化的互联网行业内,不免逐步产生了无法把控的思绪混乱,而“微”刚好能解决这个痛点。

微服务的精髓

“分而治之”是微服务的精髓!理解了这个精髓,就可以如庖丁解牛般设计你的系统架构。每个相对独立的业务均可拆分为微服务,微服务高度自治,数据、缓存、接口都是自我管理的,不要麻烦别的服务区管理,微服务间的通信一般约定为接口间的通讯和异步消息的通讯。微服务和微服务组合共同提供外部的接口,已形成更大的服务。

微服务的复杂度

由于把许多独立的业务拆成不同的微服务,因此带来的微服务构建的复杂度,一般表现为下列几点:

  1. 微服务的注册和发现

  2. 微服务的部署和弹性伸缩

  3. 微服务间的通讯

  4. 微服务间通讯的效率

  5. 微服务间的事务性(ACID)

  6. 微服务的对外网关、限流熔断

  7. 微服务的全局配置

  8. 微服务的认证授权(OAuth2)

  9. 微服务间的异步通讯、消息

  10. 微服务的日志

  11. 微服务的监控

  以上难题也是大型分布式应用的难题。

.net core 微服务架构选型

  

.net core 自研落线一

  最简单的方案,没有之一:选择原生的asp.net core api方式构建微服务。

  对标下列内容:

  1. 微服务的注册和发现 :集成诸如Zookeeper之类的服务

  2. 微服务的部署和弹性伸缩: docker + Kubernetes

  3. 微服务间的通讯:Http WebApi

  4. 微服务间通讯的效率:低,有级联崩溃的可能性

  5. 微服务间的事务性(ACID):CAP或异步通讯+人工处理

  6. 微服务的对外网关、限流熔断:nginx/Kubernetes/IIS/自己轻量包装

  7. 微服务的全局配置:DB/Redis/zookeeper

  8. 微服务的认证授权(OAuth2):IdentityServer

  9. 微服务间的异步通讯、消息:RabbitMq等类似组件

  10. 微服务的日志: log4net /Rabbitmq

  11. 微服务的监控:HealthCheck接口

  该方案实施起来快速稳定,能满足小公司到中型公司的过渡。

.net core 自研落线二

  最简单的方案,没有之一:选择Thrift、Grpc、dotnetty等方式构建微服务。

  对标下列内容:

  1. 微服务的注册和发现 :集成诸如Zookeeper之类的服务

  2. 微服务的部署和弹性伸缩: docker + Kubernetes

  3. 微服务间的通讯:RPC

  4. 微服务间通讯的效率:高

  5. 微服务间的事务性(ACID):CAP或异步通讯+人工处理

  6. 微服务的对外网关、限流熔断:nginx/Kubernetes/IIS/自己轻量包装

  7. 微服务的全局配置:Apollo等类似相关配置中心

  8. 微服务的认证授权(OAuth2):IdentityServer

  9. 微服务间的异步通讯、消息:RabbitMq等类似组件

  10. 微服务的日志: 三方组件/自研

  11. 微服务的监控:CAT、 KariosDB三方集成

  该方案实施起来快速稳定,能满足中小公司到大型公司的过渡。

微服务总结

  微服务相关的一系列配套组件,不一定都要非常好的解决掉才能上线,企业内部可以按照自己的规模和实际技术积累情况进行裁剪,很多运维和监控方面的组件也许会在后期才去重视,这也是现实逼迫所致,无可厚非。

但有一点需要提早规划,那就是怎么支持分布式事务,架构拆分成微服务后,和之前的架构区别最大的就是次点,因此需要提前规划重视!

posted @ 2020-10-22 11:44  懵懂小门神  阅读(728)  评论(0)    收藏  举报