基于SpringBoot的微服务架构与K8S容器部署实践( 四 )


基于SpringBoot的微服务架构与K8S容器部署实践

文章插图
 
?
DynatraceDynatrace可能是目前最优秀的应用性能管理工具(APM),它既能监控基础设施如服务器,K8S容器,又能自动发现并监控在容器内运行的动态微服务,了解它们如何执行、相互之间如何通信,还能立即检测出性能不佳的微服务 。在我们的案例中,通过定制dashboard添加我们所需要关注的监控数据 。
基于SpringBoot的微服务架构与K8S容器部署实践

文章插图
 
?
Dynatrace还能自动识别服务,并提供更精细的检测数据,为开发或运维人员定位问题,带来了极大的帮助 。
基于SpringBoot的微服务架构与K8S容器部署实践

文章插图
 
?
一些思考
  • 数据库分库分表方案带来的代码侵入问题:MyCat+MySQL虽然在物理上实现了分库分表,但对于开发来说带来了侵入性问题,需要为分片键进行特殊的表结构设计,在进行查询时也需要额外考虑分片键的使用,以提升查询效率 。其他的如事务的处理,由于分库的关系,我们不再依赖事务,而是通过数据最终一致性,以及错误补偿等方式进行处理 。
  • 未来数据库的选型:MyCat+MySQL给数据库运维增加了复杂性,而未来针对超大数据量级的应用,在硬件资源允许的情况下,可以考虑转向如:TiDB这样的NewSQL方案进行替代 。
  • JVM优化:应用上线后,在高并发情况下曾偶发Long GC问题,通过分析dump文件,优化内存使用,进行了解决 。另外,对于内存变化较大的应用,也可以考虑使用jdk13,并开启ZGC 。
  • 缓存优化:案例中通过redis缓存服务配置信息,每次服务响应时都需要读取redis,这给redis造成了不小的压力,通过引入Guava cache,在本地建立缓存副本实现多级缓存,并设定合理的失效时间,能够显著降低对redis的压力 。
  • 通过应用框架实现低代码:在应用框架上的投资是非常值得的,通过将共性问题集中在应用框架中解决,可以在一定程度上实现低代码平台的特性 。开发人员也能更专注于业务逻辑的实现 。
  • 开发管理:通过让每位开发人员充分理解应用框架,并形成解决同类问题的统一Pattern,能够明显提高开发效率,减少低质量代码的产生 。
今天先记录到这里,随着实践的深入,相信后面还会有更多新的补充,也欢迎大家一起分享经验 。
作者:技匠
链接:https://juejin.cn/post/6925238390161932301

【基于SpringBoot的微服务架构与K8S容器部署实践】


推荐阅读