谷粒商城分布式基础篇03-项目微服务架构图

项目微服务架构图

    • 1.项目架构图
    • 2. 外网部署
    • 3. API网关
    • 3. 业务集群
    • 4. 存储系统
    • 5. 日志系统
    • 6. 注册和配置中心
    • 7. 问题追踪和告警系统
    • 8. 持续部署

1.项目架构图

现在再来看一下我们的微服务架构的高清大图,我们的项目是前后端分离开发,左右两边分为内网部署和外网部署。
谷粒商城分布式基础篇03-项目微服务架构图_第1张图片

2. 外网部署

外网部署也就是面向公众访问的,部署我们的前端项目。可以使用手机app、电脑web网站等不同的设备,通过给后台内网发送请求来进行访问和登录等。

谷粒商城分布式基础篇03-项目微服务架构图_第2张图片

3. API网关

前端的请求不是直接发送给我们的后端系统,请求先来到Nginx集群,Nginx将请求转交给后台Spring Cloud Gateway API网关。网关根据不同请求,动态地路由到不同的服务。当我们的服务处于多台服务器的集群中时,网关还可以采用负载均衡的方式调用我们的服务。如果某个服务出现问题,我们还可以在网关中进行熔断和降级。熔断降级功能使用的是Spring Cloud Alibaba Sentinel 组件。网关中还有其他的功能,比如认证请求是否合法再授权通过以及限制瞬时流量等。

谷粒商城分布式基础篇03-项目微服务架构图_第3张图片

3. 业务集群

我们项目中的微服务都是使用Spring Boot来开发部署的,当请求到达我们的微服务的时候,服务与服务之间使用Spring Cloud Feign组件进行通信。有些请求需要登录以后才能处理,所以我们还整合了一个可以使用一般登录和社交登录的基于OAuth 2.0的认证中心。整个系统内的安全和权限控制我们使用的是Spring Security来进行控制。

谷粒商城分布式基础篇03-项目微服务架构图_第4张图片

4. 存储系统

服务使用的缓存系统是Redis集群,可以是分片集群和哨兵集群。持久化存储使用的是MySQL集群,我们可以做成读写分离和分库分表。服务与服务之间会使用消息队列RabbitMQ集群来进行异步解耦,包括完成分布式事务的最终一致性。而全文检索功能使用的是Elasticsearch。有些服务在运行期间可能需要存储图片、视频等内容,我们使用的是阿里云的OSS对象存储服务。

谷粒商城分布式基础篇03-项目微服务架构图_第5张图片

5. 日志系统

在项目部署上线之后,为了能够快速定位到项目可能出现的一些问题,我们使用ELK来对日志进行相关的处理。也就是使用LogStash来收集业务中的各种日志,存储到ES中,然后在通过Kibana可视化界面从ES中检索出相关的日志信息,帮我们快速定位线上问题的所在。

谷粒商城分布式基础篇03-项目微服务架构图_第6张图片

6. 注册和配置中心

我们的分布式系统因为会发布到不同的服务器中,而且不同服务之间会进行调用,那么就得知道彼此在哪里。所以我们将所有服务都注册到Spring Cloud Alibaba Nacos注册中心,服务与服务之间就能够通过注册中心发现对方的位置。同时,为了集中管理多个服务的配置信息,实现动态配置,我们使用Spring Cloud Alibaba Nacos作为整个系统的配置中心。

谷粒商城分布式基础篇03-项目微服务架构图_第7张图片

7. 问题追踪和告警系统

服务在调用期间可能会出现问题,我们就需要追踪整个服务调用链,看是哪里出现了问题。我们可以使用Spring Cloud提供的Sleuth和Zinkin进行服务追踪。把追踪到的信息交给开源的Prometheus进行聚合、分析,再由开源的Grafana进行可视化展示。通过Prometheus提供的Alertmanager,可以将告警信息通过邮件或者短信通知开发和运维人员。

谷粒商城分布式基础篇03-项目微服务架构图_第8张图片

8. 持续部署

而且项目还提供了持续继承和持续部署。我们的项目由于服务众多,每一个都要打包、部署到服务器太麻烦。有了持续继承,我们的开发人员可以将代码提交到git系统。然后我们的运维人员可以通过自动化工具Jenkins从git中获取代码,将其打包成Docker镜像,最终使用K8S来集成整个服务。我们将服务以Docker容器的方式来运行。

持续部署

你可能感兴趣的:(分布式项目-谷粒商城实战,分布式,java,架构师)