什么是微服务
微服务的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底的去耦合每一个服务提供单个的服务,一个服务做一件事,从技术角度看就是一种小而独立的处理过程,类似进程概念,能够自行单独启动或销毁,拥有自己独立的数据库。
微服务之间是如何通讯
远程过程调用
直接通过远程过程调用来访问别的service
优点
简单,常见,因为没有中间件代理,系统更简单。
缺点
只支持请求/响应的模式,不支持别的,比如通知、请求/异步响应、发布/订阅降低了可用性,因为客户端和服务端在请求过程中必须都是可用的。
消息
使用异步消息来做服务间通信,服务间通过消息管道来交换消息,从而通信。
优点
把客户和服务端解耦,更轻松耦合,提高可用性,支持很多通讯机制,比如通知,请求/异步响应、发布/订阅、发布/异步响应
缺点
消息中间件有额外的复杂性。
微服务之间是如何通讯
基于容器技术,提供Dubbo、Spring Cloud等多种微服务解决方案,快速建设企业级微服务平台
持续集成
基于容器技术,兼容业界广泛使用的CI/CD场景与工具,提供高性能,易接入,易使用的持续集成与持续部署
多语言支持
支持 Java、Go、Python、JavaScript、PHP 等语言,Node.js、.Net 等环境
服务治理
支持 Spring Cloud、Dubbo、Service Mesh 应用框架及多框架混合方案 Docker、Kubernetes 开源原生支持
方案全景图
适合场景
微服务的优势
通过对业务的功能模块化分拆,对每个服务定义清晰的业务边界,将应用分解成多个可管理的微服务
敏捷性
微服务促进若干小型独立团队形成一个组织,这些团队负责自己的服务。各团队在小型且易于理解的环境中行事,这缩短了开发周期时间。您可以从组织的总吞吐量中显著获胜。
扩展性
通过微服务,您可以独立扩展各项服务已满足其支持的应用程序功能的需求,这使团队能够适当调整基础设施需求,准确衡量功能成本,并在服务需求激增时保持可用性。
复用性
将软件划分为小型且明确的模块,让团队可以将功能用于多种目的,专为某项功能编辑的服务可以用作另一项功能的构建块。这样开发人员可以创建新功能时无需从头开始编写代码。
弹性
服务独立性增加了程序应对故障的弹性,在整体式架构中,如果一个组件出现故障,可能导致整个程序无法运行。通过微服务,程序可以降低功能而不导致整个程序崩溃来处理总体服务故障。