Microservice Architecture Tech Resources

https://github.com/benwilcock/microservice-sampler

1.微服务使用Java+SpringBoot开发
http://projects.spring.io/spring-boot/
2.CQRS 操作和读取分离+Event Sourcing(ES)则使用Axon Framework V2 + MongoDB + RabbitMQ实现
http://www.axonframework.org/
https://www.mongodb.com/
https://www.rabbitmq.com/
3.编译,装配和运行则使用Docker容器完成
http://docker.com/
4.集中配置和服务注册管理则使用Spring Cloud
http://cloud.spring.io/
5.API说明使用Swagger和SpringFox
http://swagger.io/
http://springfox.github.io/springfox/docs/current/


CQRS架构模式将操作和查询分离到两个不同的组件来实现:
command-side microservice
query-side microservice
这些微服务有单一的责任,自己独立的数据存储,可以被部署并毫无影响的扩容。

CQRS/ES 架构
首先顶层是Client Facade/Gateway(Optional) 用于接收客户端的交互,然后将交互内容分为Commands类型和Queries类型
然后路由它们到相应的API调用。
Command Processor 一般处理的是写入逻辑,它的处理结果是创建Events,然后将Events保存到Event Store
然后推送给事件交换中间件,事件中间件是基于事件的发布预定机制Event Exchange

查询服务组件则是对外提供多视图或者联合查询视图, Materialised View,属于读逻辑。
查询的是View Store,它会从事件交互中间件上获取相应的事件来保持数据的一致性。

这两个组件都是通过SpringBoot框架来实现的。
而它们之间的交互则完全是事件驱动的。使用RabbitMQ messaging来在微服务组件之间传递events.
消息系统在流程,微服务,以及遗留系统之间传递事件提供了一个可扩展方法。

Command-Side Microservice:
Commands 是些改变状态的行为,command-side 微服务中包含所有的领域逻辑和业务规则。
Commands用于添加新产品,或者改变已有产品的状态。
这些命令在一个特定产品上执行的结果是 生成一些力 Events, 这些事件会通过Axon Framework 保存到MongoDB里。
然后通过RabbitMQ 消息传递给其它处理过程。

在事件源中,事件仅仅是系统状态的记录。它们被用来描述系统并根据需要为任意的实体重建当前状态。
主要是通过在某一时点上开始重放所有事件来完成。 这听起来好像很费劲,但是其实事件非常简单。
其实它执行的很快,我们甚至还可使用snapshots 的方式来回滚,然后执行那个时点以后的所有事件记录。

Query-side Microservice
扮演的是一个事件监听者或者一个视图的角色。
它监听由Command-side发出的事件,然后处理它们到任何涉及到的地方去。
它可以通过复制来无限的扩展,事件消息由RabbitMQ序列保存具备很好的稳定性。
它甚至可以在查询端失败宕机的情况下暂时保存消息。

命令端和查询端都有REST API可以用来访问它们的可用性。
Axon 
https://fabric8.io/

转载于:https://my.oschina.net/u/924064/blog/900163

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值