基于 Kubernetes 的微服务项目整体设计与实现

我就是我 2024-03-16 19:38 93阅读 0赞

总体:

  • 微服务设计:java(spring boot) + RPC(RESTFUL) + 数据库(db) + 缓存(redis) + 配置中心(apollo)
  • 微服务项目实现
  • kubernetes部署 K8seasy:https://github.com/xiaojiaqi/K8seasy\_release\_page
  • 微服务的部署
  • 高可用和监控 高可用:多实例 注册中心:eureka,zookeeper, console, Nacos(注:在kubernetes 中部署微服务,对注册中心是没有任何限制的) 监控(Metrics):Prometheus + Grafana(内存大小,200错误数目,500错误数目, JVM里线程数量,GC时间大小) 日志(Logging):直接写到kafka组件直接进入日志中心(日志不再落地,日志IO被消除了,日志的存储也和容器做到了分离) 追踪(Tracing):APM(cat, pip, zipkin, skywalkin),Zipkin 需要在项目中加入一个库,并不需要写代码,这对业务的入侵做到了很少,非常方便 流量控制:熔断、限流和降级,sentinel
  • 服务化网格和数据持久化
  • 有状态服务
  • operator

设计

考虑:

  1. 系统的可用性,可靠性、强壮性、可扩展

微服务参考架构

b1853575a8325c2e4fd3e7b043b00b6e.png

技术介绍

08806e017fbdb75a0a217c09439e3e02.png

高可观测性原则

1ed54591fa92c8b8bca2276593031074.png

阿波罗配置中心

a92c8bc0e9e3687d5834dada960a1eee.png

以 Kubernetes 为关键环节的微服务 DevOps 平台

277fd7b0a6b16381764e456c45d8aef5.png

构建和镜像推送:Jenkins Pipeline 或者 gitlab-runner Pipeline 来完成

55143c38d7a20a390683d7dff2074c46.png

工作负载访问流程图

63697d70f469c79a0ac4c1431176e2da.png

监控组件

资源层监控:Prometheus + Grafana + Node Exporter 等组件,监控Kubernetes 节点的 CPU、内存、网络、磁盘等使用情况
中间件层监控:Prometheus + Grafana + MySQL Exporter + Nginx Exporter + JVM Exporter 等,监控 MySQL、Nginx、JVM 等中间件的使用情况
链路/APM监控:Pinpoint / Skywalking 等监控工具,监控应用程序的性能表现

参考文档

  • 基于 Kubernetes 的微服务项目设计与实现
  • Kubernetes微服务图形化管理工具:Kuboard
  • Spring Cloud on Kubernetes
  • 在Kubernetes上部署SpringCloud
  • Spring Cloud 和 Kubernetes 哪个更好
  • 构建环境搭建
  • 两种项目结构

发表评论

表情:
评论列表 (有 0 条评论,93人围观)

还没有评论,来说两句吧...

相关阅读