软件系统架构演进历史
是一种将所有功能打包在一个容器内运行的设计风格,一个实例集成了一个系统的所有功能,通过负载均衡软件/设备实现多实例调用。
优点
易开发
易调试
易部署
挑战
是一种分布式服务架构的常见方式,他将应用程序的不同功能单元(成为服务)进行拆分,并通过这些服务之间定义明确的接口和协议联系起来,进而实现跨服务单元/系统交互能力。
优点
挑战
微服务(Microservices)是一种软件架构风格,它是以专注于单一职责与功能的小型功能区块(服务)为基础,服务之间相互协调相互配合,为用户提供最终价值。每个服务运行在独立的进程中,服务间采用轻量级通信机制相互沟通,每个服务都围绕着具体业务进行构建,并能够独立部署。
微服务相比 SOA 优势
微服务痛点
业务架构复杂
拆分粒度难以把握
数据一致性
多服务器运维
服务合理拆分
分布式通讯
Spring Cloud
Spring Cloud 是一个基于 Spring boot 实现的服务治理框架, Spring boot 专注于快速、方便集成多个单个个体, Spring Cloud关注全局服务治理。
Dubbo
Dubbo 是阿里开源的一款高性能轻量级分布式 RPC 框架,他提供了三大核心能力:面向接口的远程调用、智能容错和负载均衡、以及服务自动注册和发现。
Spring cloud 是使用 java 开发的。使用 java 在 Spring cloud 下开发最舒服,使用 steelto(https://steeltoe.io/)这个开发包也可以使用 .Net Core 开发Spring cloud 下的微服务,但开发体验不如 java 高效,而且支持的软件版本更新不如 Java 快。使用 Zuul 时,可能需要编写一些 java 代码。
因此,如果整个项目的技术栈是spring cloud,那么 net core 开发者可以借助 steelto 的帮助下“寄居”。如果自己技术栈的选择权,那么你可以搭建更亲近 .Net Core 的微服务框架。
Service fabric 是微软开源的是微软内部使用的第三代微服务框架。它可以使用 .Net Core 或 Java 进行开发。但是目前的开源版本不适合普通厂商使用(困难;跨平台;通用性;支持私有云,但难度大)请谨慎使用。如果你愿意花钱在 Azure 云上使用 SF,你可以使用它。但是如果你想构建SF私有云,请谨慎使用。
如果使用 .Net Core 技术栈的第二代微服务框架,推荐使用腾讯(微信支付清算网关)在使用的架构:Consul + Ocelot + .Net Core + Plolly + ...... 。
开源项目NanoFabric(https://github.com/geffzhang/NanoFabric)基于Consul + .NET Core + Polly + Ocelot + Exceptionless + IdentityServer 等开源项目的微服务开发框架。
在 NanoFabric 中,Consul 做服务治理和服务发现,Polly 做熔断降级,Ocelot做网关。
在 .net core 中,服务之间的通讯的主流形式
https://zhuanlan.zhihu.com/p/126739662