使用micro-infra-spring实现微服务

Monolith(整体型)系统其实不一定很坏,微服务可能会复杂化,微服务的好处如代码的自主权、做好一件事以及克服包依赖在整体型系统中也能做到,该文提出了一些建议:

1. 尝试DDD,实体有方法可尝试聚合根。

2. 试图从源头杜绝包依赖,如果你有两个不同的有界上下文,如 com.blogspot.toomuchcoding.client 和com.blogspot.toomuchcoding.loan,通过高聚合 低关联松耦合来实现,比如发送事件,调用REST,发送JMS消息,或通过严格定义的API交互,不要再重用那些包中内部元素。

3.将你的高中笔记拿出来读读关于封装,我们大多数错误理解将一个字段私有然后再加一个访问方法就是封装了,Slawek Sobotka文章里展示了通用封装的目标:


human.getStomach().getBowls().getContent().add(new Sausage())

这不是封装,下面才是封装:

human.eat(new Sausauge())

4.给你的IDE类生成模板增加新类缺省打包的作用域,什么应该是公开化为借口,限制包内类的数量。

5.开始跟踪微服务请求,进行业务和技术数据的衡量,收集评测。

如果你是一个潮人,直接拥抱微服务,已经评估了其所有优缺点,你的公司有Devops文化,可以从开源微服务工作模板:boot-microservice,带有UI的:boot-microservice-gui,该开源项目提供:

1. 使用micro-infra-spring库包
2.使用Groovy编写
3.使用Spring Boot
4.使用Gradle构建
5.兼容JDK8
6.包含一些业务场景案例

使用该模板,你无需再进行任何设置,只要去除/src/main和src/test中的包com/ofg/twitter,调整microservice.json支持自己的需求,然后就能够立即开始。