4

电商项目架构图_代先任的技术博客_51CTO博客

 2 years ago
source link: https://blog.51cto.com/u_14613614/5559352
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

电商项目架构图

原创

wx5dcc234a75dbc 2022-08-09 16:22:56 博主文章分类:微服务 ©著作权

文章标签 微服务 nginx 限流 文章分类 Java 编程语言 阅读数183

  1. 项目架构图如下:
电商项目架构图_nginx
  1. 项目结构图的说明:

      客户端可以是pc端,也可以是手机,或者其它的移动设备,当客户端向后台发送请求的时候,首先需要经过我们的路由器,路由器根据我们的VIP(虚拟IP地址)将请求转换给具体的虚拟路由器(keepalived+nginx),为了保证高可用,此时的虚拟路由器是需要做高可用配置的(至少两台以上的服务)。主要用来解决单点故障。

      Nginx单点可以解决5万的并发,并且Nginx还能够做限流(IP限流,或者访问速率限流),并且Nginx还具备缓存的功能。后期为了解决更高的并发,我们可以加入openResty,这样单点就可以解决10k到1000k的并发。

      虚拟路由器将请求转发给我们的网关(Gateway) GateWay的主要作用如下

     1. 将用户的请求转发给具体的微服务。

     2. 限流,微服务网关需要使用服务器发布,譬如tomcat,所以这一块所解决的并发是有限的,主要为后台的商品,订单,用户微服务模块提供保护。

     3. 统一的鉴权。从而判断用户是否能够进行对应的操作。

    请求这个时候,就会到达具体的微服务,因为微服务与微服务之间需要进行相互的调用,所以我们需要使用Feign进行微服务的调用。模块与模块之间需要有公用的JavaBean和工具类。所以我们把Feign和通用JavaBean和工具类,都封装成一个一个的微服务。

      还有Ribbon负载均衡,和HyStrix服务的熔断降级,我们都需要做成一个一个的微服务。

     我们会把分布式的事务处理,oauth2.0的授权服务,消息服务,canel数据同步监听服务,支付等等其它的功能,都做成我们的公共的微服务组件。方便调用。

      我们使用spring cloud Bus 来做微服务各个文件的监听服务。

      整个项目,我们使用服务的注册与发现组件(Nacos/Consul/Eureka/Zookeeper........),服务的监控组件Hystraix DashBorad,我们使用统一的服务配置中心ConfigServer.我们使用的远程仓库是GitHub.

     整个项目,我们数据层的支持如下:

    1. 数据的检索,使用的是ES集群。

    2. 项目中的文件采用的是FastDFS集群。

    3. 数据持久化层采用的MySQL集群,底层采用的是分库分表。

    4. 缓存使用的Redis集群。

  • 收藏
  • 评论
  • 分享
  • 举报

上一篇:JAVA的发展历程


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK