什么是微服务

微服务的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底的去耦合每一个服务提供单个的服务,一个服务做一件事,从技术角度看就是一种小而独立的处理过程,类似进程概念,能够自行单独启动或销毁,拥有自己独立的数据库。

微服务之间是如何通讯

远程过程调用

直接通过远程过程调用来访问别的service

优点

简单,常见,因为没有中间件代理,系统更简单。

缺点

只支持请求/响应的模式,不支持别的,比如通知、请求/异步响应、发布/订阅降低了可用性,因为客户端和服务端在请求过程中必须都是可用的。

消息

使用异步消息来做服务间通信,服务间通过消息管道来交换消息,从而通信。

优点

把客户和服务端解耦,更轻松耦合,提高可用性,支持很多通讯机制,比如通知,请求/异步响应、发布/订阅、发布/异步响应

缺点

消息中间件有额外的复杂性。

微服务之间是如何通讯

基于容器技术,提供Dubbo、Spring Cloud等多种微服务解决方案,快速建设企业级微服务平台

持续集成

基于容器技术,兼容业界广泛使用的CI/CD场景与工具,提供高性能,易接入,易使用的持续集成与持续部署

多语言支持

支持 Java、Go、Python、JavaScript、PHP 等语言,Node.js、.Net 等环境

服务治理

支持 Spring Cloud、Dubbo、Service Mesh 应用框架及多框架混合方案 Docker、Kubernetes 开源原生支持

方案全景图

适合场景

跨部门合作
在IT部门中,根据业务不同会有多个团队协同工作,易导致相同业务逻辑重复代码,提交代码频繁出现冲突等问题。
承载搞并发业务
在单体应用业务中,业务涉及到的事往往都在一段代码中实现,通常要提高业务并发,保障架构的通用性、可扩展性、高可用、高性能。
业务快速迭代
在实际业务中,开发,测试,准生产环境由于配置不同,需要制定一系列流程规范保证环境一致,导致效率低下;小功能积累到大版本才能部署,不能有效快速迭代。
资源利用率低
横向扩展流程复杂,主要业务与其他业务耦合,单体应用服务无状态后,通过部署多份提高性能,但资源浪费严重,如果涉及相互依赖配置,会造成扩展配置失败。

微服务的优势

通过对业务的功能模块化分拆,对每个服务定义清晰的业务边界,将应用分解成多个可管理的微服务

敏捷性

微服务促进若干小型独立团队形成一个组织,这些团队负责自己的服务。各团队在小型且易于理解的环境中行事,这缩短了开发周期时间。您可以从组织的总吞吐量中显著获胜。

扩展性

通过微服务,您可以独立扩展各项服务已满足其支持的应用程序功能的需求,这使团队能够适当调整基础设施需求,准确衡量功能成本,并在服务需求激增时保持可用性。

复用性

将软件划分为小型且明确的模块,让团队可以将功能用于多种目的,专为某项功能编辑的服务可以用作另一项功能的构建块。这样开发人员可以创建新功能时无需从头开始编写代码。

弹性

服务独立性增加了程序应对故障的弹性,在整体式架构中,如果一个组件出现故障,可能导致整个程序无法运行。通过微服务,程序可以降低功能而不导致整个程序崩溃来处理总体服务故障。