架构概述:
- 架构共分为5层,访问层,接入层,网关层,服务层,数据层
- 服务架构涉及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 : 微服务应用监控,健康检查等
部署架构
- Jenkins:用于持续集成与持续部署,自动化运维
- Gitlib:代码私服,基于git的代码版本管理及开发人员协同开发工具
- Maven:项目管理工具,用于管理项目报告,管理JAR文件
- Soner:代码质量管理工具,用于代码分析及代码质量管理
- Docker:容器引擎,用于部署服务
- 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等再加入