微服务架构及 Dubbo 微服务调用的时序图
微服务架构
Microservices architecture style (microsoft)
微服务的一些特点:
微服务是小型,独立且松散耦合的。
每个服务都是一个单独的代码库。
服务可以独立部署。
数据去中心化,服务保存其自己的数据。
轻量级通讯, 服务通过使用API相互通信。
产品化,按照产品实施是,持续改进提升。
微服务推行一般也伴随着组织结构的调整。
经常与微服务提到的一些概念:
中台架构
与微服务没有直接关系, 中台是企业级别功能复用,针对企业级别的架构设计一般分为: 业务中台,数据中台, 技术中台
领域驱动设计
是对具体业务领域的建模抽象
组件设计原则
具体技术实现的一些指导原则。
我们团队中没有使用微服务,但这种精细化应该是趋势。
以我所在团队组织架构为例, 开始我们是一个大的项目组, 负责一个产品, 需求不断增加, 项目负责人根本无法应付, 后来根据不同的业务渠道, 将原有产品分为多个子产品, 项目组也对应的分为多个小组,有专有 的开发,测试人员。 每个小组专注自己负责渠道产品。
这种拆分,子产品职责边界更加清晰, 代码也变少了, 单独的部署,单独发布, 互相影响也变少了, 项目也更加便于维护了。
各个组之间一些交互,开始的时候我们使用的数据库(dblink)这种方式, 后来发现一旦提供服务方的数据库变动, 可能导致服务使用方也要跟着变更,有时候评估不到,会导致一些生产问题, 后来我们通过提供联机服务方式屏蔽一些内部调整。
Dubbo 微服务调用的时序图
服务注册
服务调用
示例:
根据dubbo官网的demo修改了一个简单版本, 通过Payment描述接口, Provider 实现服务提供, consumer调用服务, 使用zookeeper做为注册中心。
Payment.java 支付功能定义
PaymentImpl.java 支付功能实现
Provider.java 通过 provider.xml 完成服务注册
provider.xml
Consumer.java 实现服务的调用
comsumer.xml
下载zookeeper, 启动服务 zkServer.cmd
我这里是windows环境
运行 provider , 通过zookeeper客户端可以看到 dubbo相关注册信息
运行Consumer可以看到服务调用结果
另外dubbo 还提供了页面管理端, dubbo-admin可以进行服务路由、监控、配置等功能, 可以通过过zipkin进行路由的分析。
参考及引用
架构师训练营作业-李智慧老师相关讲义
Photo by Valeria Vinnik from Pexels
https://docs.microsoft.com/en-us/azure/architecture/guide/architecture-styles/microservices
评论