封装一线大厂常见功能脚手架
- 基于spring boot 2.1.7.RELEASE + spring cloud Greenwich.SR6进行实验,版本需要对应
- 使用nacos作为配置中心
- 使用consul作为注册中心
- consumer和provider通过service name来进行feign client服务调用
- 使用ribbon进行负载均衡
- 实现nacos spring cloud配置变更方法回调
- 支持配置中心变更时refresh属性配置
- 支持使用redisson/分布式锁/redis 5.0.7等操作
- 封装feign HttpResult
- docker/k8s部署
- hystrix熔断,sentinel尝试
- kafka 1.0.2安装,spring-kafka集成
- sharding-jdbc分库分表,pagehelper使用
- es 6.4.3集成,中文分词插件ik安装
- mongo 4.0.28集成
- 通用工具包封装,例如ExceptionHandler,异常码
- hbase 2.1.9集成
- spring cloud gateway微服务网关集成,谓词测试,流程图补充
- 抽取几个子域公共代码,kafka/es等中间件
- 用户域等登陆鉴权
- ddd分层领域驱动设计,防腐层添加,基础设施层设计,DTO/BO/DO之间的关系梳理清楚
- checkstyle安装
- apollo集成
- 开启配置中心
本实例使用的是nacos,已经部署在云端,无需配置
- 开启注册中心
使用consul,则需要手动启动
consul agent -server -ui -dev
访问页面: http://localhost:8500/ui
- 开启两个provider
provider1:
java -Dserver.port=9999 -jar provider/target/provider-0.0.1-SNAPSHOT.jar
java -Dserver.port=9998 -jar provider/target/provider-0.0.1-SNAPSHOT.jar
可以看到会往consul上注册服务,且注册了actuator的健康检测连接,consul每10秒会调用这个链接检测存活。
- 开启一个consumer,并调用接口测试consumer
java -Dserver.port=9991 -jar consumer/target/consumer-0.0.1-SNAPSHOT.jar
通过consul ui可以看到已经启动了3个instance:
http://localhost:8500/ui/dc1/services
访问页面:
http://localhost:9991/getUserByName?name=xiaoming
再次访问,则调用provider1:说明底层使用roundrobin负载均衡
- nacos测试:
调用http://localhost:9991/getKey,得到myKey的值:
修改myKey:
curl -X POST "http://101.43.195.208:8848/nacos/v1/cs/configs?dataId=spring-cloud-consumer.properties&group=DEFAULT_GROUP&content=myKey=123"
可以看到整个文件内容都被替换了,原来的useLocalCache也没有值了。 再次getKey: 6. 异常测试:
(1) 超时测试,会调用三次provider:
http://localhost:9991/timeout?timeout=2
(2) 运行时异常,500,不重试
http://localhost:9991/fail?name=xiaoming