流程图:
流程梳理:
1. 用户在客户端发起请求,进行DNS(Domain Name System域名服务器)解析,其中包括WAF(Web Application Firewall),CDN(Content Distribution Network内容分发网络),防火墙
2.再通过Nginx集群反向代理到Spring5.0之后添加的Webflux网关,通过SpringCloud Gateway进行动态路由指定Predicate(断言)和Filer(过滤器)寻址与Sentinel+Shard进行认证授权和令牌限流,中间还可以整合Redis;
3.另一方面Nacos合作为它提供监控报警和日志,继承服务注册发现功能,Nacos集群再整个架构中都能提供服务注册发现于动态配置和配置管理功能,整合SpringBoot Admin进行服务监控
4.同时Gateway可以通过Ribbon进行负载均衡、Sentine熔断降级和业务集群建立桥梁,先是通过SpringSencurity框架于OAuth2认证中心整合JWT进行公钥私钥的颁发、授权、与响应验证功能
5.SpringBoot应用再业务集群中通过OpenFegn进行相互调用,中间还整合Redis、Mysql , MQ, ES, OSS, JOB等工具,其中Redis集群可以用来做发呢不是数据缓存;Mysql主从复制进行数据的持久化;RabbitMQ进行系统解耦,削峰,填谷,异步调用;ES全文搜索引擎整合Kibana、Logstash进行近乎实时搜索、分析和可视化的全文检索,使用阿里云OSS云存储服务进行对象存储、企业数据管理,使用xxl-job进行分布式任务调度。
6.业务集群海域分布式相挂钩,有着分布式主键,分布式锁,分布式事务,其中有两个理论,一个是CAP(Consistency一致性、Availability可用性、Partitiontolerance分区容错性)理论(这三个要素最多只能同时实现两点,不可能三者兼顾)一个是BASE(Basically Available基本可用、Soft State软状态、Eventual Consistency最终一致性)理论(即使无法做到强一致性,CAP的核心就是强一致性,但应用可以采用适合的方式达到最终一致性)
7.日志收集通过Beats、ELK、和Kafka整合完成没具体过程是这样的:Beats用于日志数据采集使用,Logstash 收集日志,发送给Kafka进行解耦、异步处理和流量削峰,然后通过Elasticsearch集群存储日志数据,索引日志数据,再通过Kibana试图形式展现日志信息,更加人性化的再客户端进行检索以及相关操作
8.以Skywalking为核心的运维监控中心可用提供链路追踪和监控报警机制,与运维报警系统Prometheus结合Grafana最终和Alertmenager通过短信、微信或者邮件的形式给模块负责人发送警告通知
9.最后Developer京代码文件上传到GitHub上通过dockers容器部署,使用K8S UAT/PROO对资源进行编排,管理应用的全声明周期,同时也提高发布于更新版本的效率,然后通过Jenkins Pipeline进行整个构建、测似、交付等持续继承,运维人员继续对这些进行维护