什么是微服务
微服务的概念最早是在 2014 年由 Martin Fowler 和 James Lewis 共同提出,他们定义了微服务是由一组单一应用程序构成的小服务,这些小服务拥有自己的进程,服务按照业务功能来设计,以全自动的方式进行部署,与其他服务使用 HTTP API 通讯。同时,服务会使用最小规模的集中管理 (例如 Docker)技术,服务可以用不同的编程语言与数据库等。
以商城系统为例,通过微服务化,可以将商品模块继续拆分为商品属性服务和商品详情服务,每个服务依赖各自的资源,并独立部署在不同的服务池中,可以由不同的开发人员进行维护。当商品详情服务需求变更时,只需要修改商品详情服务相关的代码,并独立上线发布;而商品属性服务不需要变更,也不会受到发布可能带来的变更影响。
这是一个简单的电商单体到微服务架构的演进图
单体架构中整个团队维护开发一个大工程及一个单库,到了微服务架构,用户请求经过API Gateway被路由到下游服务,服务之间以轻量级通信协议进行通信,服务通过注册中心发现彼此,每个服务都有专门的开发维护团队,每个服务对应独立的数据库,服务独立开发,独立部署和上线。
微服务解决什么问题
传统的应用都是单体架构,就是将应用程序的所有功能都放在一个项目或者解决方案中,不管你你有没有做分布式,它们的代码都运行在同一个进程中,所有的应用资源也都在同一个进程中,某个模块出了问题,可能会导致整个进程都挂掉了。
在早期业务规模不大、开发团队人员规模较小的时候,采用单体应用架构,开发和运维成本都不高。然而随着业务规模的不断扩大,单体应用架构就会开始出现问题,如复杂性高、交付效率低、伸缩性差、可靠性差、阻碍创新技术。
想要解决上面这些问题,服务化的思想也就应运而生,而微服务正是由这种服务化的思想一步步演进而来。单体应用进化到服务化拆分部署,后期又随着移动互联网规模的不断扩大,敏捷开发、持续交付、DevOps 理论的发展和实践,以及基于 Docker 容器化技术的成熟,微服务架构开始流行,逐渐成为应用架构的未来演进方向
微服务的优点
易于开发与维护
单个微服务应用的代码量相对较小,易于理解
启动时间短,开发效率高
独立部署
一个微服务的修改不需要协调其它服务
伸缩性强
每个服务都可以在横向和纵向上扩展
每个服务都可按硬件资源的需求进行独立扩容
与组织结构相匹配
微服务架构可以更好将架构和组织相匹配
每个团队独立负责某些服务,获得更高的生产力
技术异构性
使用最适合该服务的技术 降低尝试新技术的成本
总结来说,微服务架构是将复杂臃肿的单体应用进行细粒度的服务化拆分,每个拆分出来的服务各自独立打包部署,并交由小团队进行开发和运维,从而极大地提高了应用交付的效率,并被各大互联网公司所普遍采用。
微服务与.NET Core
为什么是.net Core?虽然.Net Framework也可以实现微服务,但是.Net Core是为云而生,用来实现微服务更方便,而这也正是.NET Core的优势。而且.Net Core可以跨平台,也是.NET的未来,毕竟.Net Framework已经成为历史,.Net Core也即将更名为.NET 5。
在.NET Core的官网,微服务俨然已成为它的重要特性之一,也是.NET Core的开发目标。
.NET Core 3.1+微服务集训
由.NET架构师Zilor老师打造的《.NET Core 3.1+微服务实战》一周集训很快就要开营了,前399名扫码进班级群的小伙伴, 免费学习 。金三银四.Neter决胜年薪30W,你必须拥有的一张“王炸”,火速get。
进班级群后还赠送