微服务架构图

架构图.png
整个业务前后端分离。用户可通过手机端或电脑端访问,访问通过nginx集群到达API网关(使用SpringCloud Gateway),网关可以做认证授权(有权限的用户才能通过)、动态路由(负载均衡、访问合适的服务器)、令牌限流(熔断降级)。业务集群是由各个微服务组成的,使用的是SpringBoot框架,各微服务之间采用的是Feign进行通信。数据存储部分,缓存采用的是Redis集群(分片+哨兵模式),基本数据采用的MySql存储,消息队列使用的是RabbitMQ,涉及到全文检索(如搜索商品详情)等则使用的是ElaticSearch,一些图片视频等使用的第三方云服务。分布式系统中,由于每个服务部署在不同的服务器上,服务与服务之间需要相互调用,为了确定各服务在哪些,引入了注册中心(Nacos),服务上下线只用通知注册中心,服务调用也在注册中心寻找被调用服务的位置。各个服务的配置众多,要改一处配置会非常麻烦,可将所有的服务配置放在一起,即配置中心(Nacos),服务从配置中心动态获取配置。服务追踪,追踪服务调用链哪里出了问题,使用springcloud提供的Sleuth、Zipkin、Metrics,把每个服务的信息交给开源的Prometheus进行聚合分析,再由Grafana进行可视化展示,提供Prometheus提供的AlterManager实时得到服务的告警信息,以短信/邮件的方式告知服务开发人员。日志信息可使用ELK对日志进行处理,使用LogStash收集业务里的各种日志,把日志存储到ES中,用Kibana可视化页面从ES中检索出相关信息,帮助我们快速定位问题所在。还提供了持续集成和持续部署。项目发布起来后,因为微服务众多,每一个都打包部署到服务器太麻烦,有了持续集成后开发人员可以将修改后的代码提交到github,运维人员可以通过自动化工具Jenkins Pipeline将github中获取的代码打包成docker镜像,最终是由k8s集成docker服务,将服务以docker容器的方式运行。

posted @ 2021-02-15 20:01  bGpi  阅读(178)  评论(0编辑  收藏  举报