小团队真的适合引入SpringCloud微服务吗?
Java技术迷
共 5544字,需浏览 12分钟
· 2021-09-26
点击关注公众号,Java干货及时送达
点击上方 Java技术迷,选择 设为星标
公司的背景是提供SaaS服务,对于大客户也会有定制开发以及私有化部署。经过2年不到的时间,技术架构经历了从单体到微服务再到容器化的过程。
单体应用时代
接口定义
版本,统一跟在 /api/后面,例如 /api/v2
以资源为中心,使用复数表述,例如 /api/contacts
,也可以嵌套,如/api/groups/1/contacts/100
url中尽量不使用动词,实践中发现做到这一点真的比较难,每个研发人员的思路不一致,起的名字也千奇百怪,都需要在代码Review中覆盖。 动作支持, POST / PUT / DELELE / GET
,这里有一个坑,PUT和PATCH都是更新,但是PUT是全量更新而PATCH是部分更新,前者如果传入的字段是空(未传也视为空)那么也会被更新到数据库中。目前我们虽然是使用PUT但是忽略空字段和未传字段,本质上是一种部分更新,这也带来了一些问题,比如确有置空的业务需要特殊处理。接口通过swagger生成文档供前端同事使用。
持续集成(CI)
微服务时代
服务拆分原则
框架选择
zuul作为gateway,分发不同客户端的请求到具体service erueka作为注册中心,完成了服务发现和服务注册 每个service包括gateway都自带了Hystrix提供的限流和熔断功能 service之间通过feign和ribbon互相调用,feign实际上是屏蔽了service对erueka的操作
架构改造
自动化部署
链路跟踪
spring cloud sleuth + zipkin
,国内有美团的CAT等等。其目的就是当一个请求经过多个服务时,可以通过一个固定值获取整条请求链路的行为日志,基于此可以再进行耗时分析等,衍生出一些性能诊断的功能。不过对于我们而言,首要目的就是trouble shooting,出了问题需要快速定位异常出现在什么服务,整个请求的链路是怎样的。运维监控
telegraf + influxdb + grafana
的方案。telegraf作为探针收集jvm,system,mysql等资源的信息,写入influxdb,最终通过grafana做数据可视化。spring boot actuator
可以配合jolokia暴露jvm的endpoint。整个方案零编码,只需要花时间配置。容器化时代
架构改造
CI中多了构建docker image的步骤 自动化测试过程中将数据库升级从应用中剥离单独做成docker image 生产中用k8s自带的service替代了eruka
Spring Cloud与k8s的融合
eureka.client.enabled
设置为 false,停止各服务的eureka注册ribbon.eureka.enabled
设置为 false,让ribbon不从eureka获取服务列表以服务foo为例,
foo.ribbon.listofservers
设置为 http://foo:8080
,那么当一个服务需要使用服务foo的时候,就会直接调用到http://foo:8080
CI的改造
小结
评论
知乎高问:程序员有必要知道为什么做某个功能吗?
将Python客栈设为“星标⭐”第一时间收到最新资讯前言知乎上有一个提问:程序员有必要知道为什么做某个功能吗?↓↓↓今天,我们就这个话题一起来做个讨论。不知道程序员的你,在接到产品经理提的一个需求后,是习惯马上动手开始撸代码呢?还是会先暂停一下,认真思考一会如下一些问题,比如这个需求产生的背景是什么
Python客栈
0
React正在杀死Angular吗?
点击上方 前端Q,关注公众号回复加群,加入前端Q技术交流群作者 |Hassan Trabelsi
策划 & 翻译 |张卫滨这是一个老生常谈的争论(在技术时代,这是在所难免的):Angular 对战 React。这就像“先有鸡还是先有蛋”的难题,不过这个问题是针对 Web 开发
前端Q
0
你真的理解 devDependencies 和 dependencies 的区别吗?
点击上方 前端Q,关注公众号回复加群,加入前端Q技术交流群作者:井柏然原文:https://juejin.cn/post/7135795969370619918你是否真的理解 devDependencies 和 dependencies 的区别?如果不能确切的回答、理解还停留在模糊的阶段,
前端Q
0
江苏省人民医院外科党总支专家团队到盱眙县人民医院开展惠民医疗活动
党建引领聚合力,共建交流惠民生。4月20日,江苏省人民医院外科党总支专家团队走进盱眙县人民医院开展党建主题活动。江苏省人民医院外科党总支书记、大外科副主任杨力,大外科主任吴延虎,盱眙县人民医院院长干文武出席座谈交流会并讲话,盱眙县人民医院党委委员、副院长刘新亮主持了活动。杨力说,江苏省人民医院和盱眙
盱眙老妹
0
分享几个前端中好玩且有用的开源工具,总有一个适合你!
点击上方 前端Q,关注公众号回复加群,加入前端Q技术交流群正所谓差生文具多,作为前端的我们,拥有几个合适的工具和网站可以很有效的提高我们的工具效率,还会有一些很有趣的网站可以在我们敲 bug 累了的时候供我们娱乐,接下来我就和大嘎分析一下我在用的一些工具和网站。聚合API该网站提供了大量的
前端Q
0