项目架构设计

项目架构设计_第1张图片

 

架构概述:

  1. 架构共分为5层,访问层,接入层,网关层,服务层,数据层
  2. 服务架构涉及26个技术点,部署架构7个技术点

服务架构

1.LVS:四层负载均衡,将用户分发到不同Nginx服务器上

2.Nginx: 是一个高性能的HTTP和反向代理的web服务器,用于部署前端应用

3.Keepalived:高可用,此处指的是集群

4.JWT:全称:Java Web Token ,用户身份校验,鉴权

5.Spring Cloud Getway:网关中心,用于统一管理服务IP地址,

6.Knife4j:API文档,用于接口记录和描述

7.Sentinel:alibaba流量防卫兵,用于服务限流,服务熔断,服务降级

8.Ribbon:实现客户端负载均衡

9.Feign:用于服务间的远程调用

10.Nacos:注册中心兼配置中心

11.xxl-job:调度中心,用于各种任务调度,例如定时发送邮件等

12.shardingSphere:分库分表,读写分离

13.Jedis/Redisson:redis的客户端

14.redis:分布式缓存

15.mysql:数据库

16.rocketMQ:消息队列,削峰填谷

17.Canal-Server:将mysql数据同步到rocketMQ

18.Canal-Adapter: 将rocketMQ的数据同步到ElasticSearch

19.ElasticSearch: 搜索引擎,提供数据搜索的支持

20.OSS:第三方服务,用于存储非结构化数据,例如视频,音频,图片等

21.fiebate:日志收集系统

22.kafua:提供消息的订阅与发布机制

23.ElasticSearch + Logstash + kibana:提供日志监控展示功能

24.Grafana + Prometheus + ExporterMetrics:监控报警系统

25.SkyWalking Agent APM :大规模分布式追踪系统,用于性能监控

26.Spring Actuator + Spring Boot Admin : 微服务应用监控,健康检查等

部署架构

  1. Jenkins:用于持续集成与持续部署,自动化运维
  2. Gitlib:代码私服,基于git的代码版本管理及开发人员协同开发工具
  3. Maven:项目管理工具,用于管理项目报告,管理JAR文件
  4. Soner:代码质量管理工具,用于代码分析及代码质量管理
  5. Docker:容器引擎,用于部署服务
  6. Nexus3:jar包仓库管理工具,用于建立本地私服仓库

     7.Kuberneters(K8s):基于容器的分布式架构方案,用于对docker进行统一的编排与管理

本架构可以将其分为几个层面:

1、访问负载均衡:LVS

2、系统基本框架架构:springboot、springcloud、dubbo、mybatis、jpa等

3、中间件选用:redis(Mongdb、Memcache 、Ehcache)、shardingSphere(mycat、TDDL)、rocketMQ(rabbitmq、activeMQ、kafaka)、

  • Sharding-Sphere:jar,前身是sharding-jdbc;

  • TDDL:jar,Taobao Distribute Data Layer;

  • Mycat:中间件。

4、服务监控、性能监控、容错处理:

性能监控(SkyWalking、Zipkin、Pinpoint)、警告监控(Zabbix、Open-Falcon、Prometheus)

5、日志:elk 、elfk、elastic stack、+kafka、

6、搜索架构:es、solr

7、第三方:阿里oss、七牛oss、阿里云直播、腾讯云直播、阿里云各种云三方、微信支付、支付宝支付、银联支付、微信登陆、支付宝登陆、qq登陆、微博登陆、阿里短信、邮件
8、数据层、数据库所选技术:mysql、Oracle、Hbase、sqlserver、DB2

9、用户鉴权:SpringSecurity、Shiro
10、部署方面:

11、代码风格:

1、统一返回格式

2、统一日志打印

3、统一异常返回

4、代码规则参考阿里手册

5、统一响应码

6、代码校准插件

12、接口文档:Knife4j(基于swagger)

13、加速访问:CDN

14、任务调度框架:XXL-Job、Elastic-Job、Quartz

后面接触到大数据、云计算、ai等再加入

你可能感兴趣的:(项目架构设计)