Java项目架构演进和SpringCloud总结
Java项目架构演进过程和SpirngCloud知识总结:技术梳理开发技术栈以SpringCloud为主,单个微服务模块以SpringMVC+SpringBoot/Spring+MyBatis组合进行开发前端层,页面H5+thymeleaf/样式CSS3+Bootstrap/前端框架JQuery+Node|Vue等负载层,前端访问通过Http或Https协议到达服务端的LB,可以是...
技术梳理
- 开发技术栈以SpringCloud为主,单个微服务模块以SpringMVC+SpringBoot/Spring+MyBatis组合进行开发
- 前端层,页面H5+thymeleaf/样式CSS3+Bootstrap/前端框架JQuery+Node|Vue等
- 负载层,前端访问通过Http或Https协议到达服务端的LB,可以是F5等硬件做负载均衡,还可以自行部署LVS+Keepalived等(前期量小可以直接使用Nginx)
- 网关层,请求通过LB后,会到达整个微服务体系的网关层Zuul(Gateway),内嵌Ribbon做客户端负载均衡,Hystrix做熔断降级等
- 服务注册,采用Eureka来做服务治理,Zuul会从Eureka集群获取已发布的微服务访问地址,然后根据配置把请求代理到相应的微服务去
- docker容器,所有的微服务模块都部署在Docker容器里面,而且前后端的服务完全分开,各自独立部署后前端微服务调用后端微服务,后端微服务之间会有相互调用
- 服务调用,微服务模块间调用都采用标准的Http/Https+REST+JSON的方式,调用技术采用Feign+HttpClient+Ribbon+Hystrix
- 统一配置,每个微服务模块会跟Eureka集群、配置中心(SpringCloudConfig)等进行交互
- 第3方框架,每个微服务模块根据实现的需要,通常还需要使用一些第三发框架,比如常见的有:缓存服务(Redis)、图片服务(FastDFS)、搜索服务(ElasticSearch)、安全管理(Shiro)等等
- Mysql数据库,可以按照微服务模块进行拆分,统一访问公共库或者单独自己库,可以单独构建MySQL集群或者分库分表MyCat等
其他组件
SpringCloud Stream:数据流操作开发包
SpringCloud Turbine是聚合服务器发送事件流数据的一个工具,用来监控集群下hystrix的metrics情况。
SpringCloud Task:提供云端计划任务管理、任务调度。
SpringCloud Sleuth:日志收集工具包实现了一种分布式追踪解决方案,封装了Dapper和log-based追踪以及Zipkin和HTrace操作,
SpringCloud Security:基于spring security的安全工具包,为应用程序添加安全控制
服务部署:Kubernetes , OpenStack
全链路追踪:Zipkin,brave
服务监控:zabbix
SpringCloud CLI:基于 Spring Boot CLI,可以让你以命令行方式快速建立云组件。
全局控制:选举leader、全局锁、全局唯一id
安全鉴权: auth2、 openId connect
自动化构建与部署: gitlab + jenkins + docker
服务监控和告警(Spring Boot Admin)
技术架构演进
-
第1阶段单体
-
第1-2阶段
随着访问量的增加,单台服务器无法满足需求,在假设数据库服务器没有压力的情况下,我们把应用服务器从一台变成两台或者多台,把用户的请求分散到不同的服务器上,提高负载均衡.
-
阶段2-1
该阶段引入了Nginx他的主要功能是:反向代理+动静分离+分在均衡
-
阶段2-2Niginx+应用服务器配置集群+HA
-
阶段3负载均衡服务器配置集群
-
阶段4CDN+Varnish服务器配置集群
-
阶段5数据库读写分离
-
阶段6NOSQL+分布式搜索引擎
-
阶段7NOSQL(HA)+分表分库+MyCat
-
第8阶段分布式文件系统存储图片等
-
第9阶段应用服务化拆分+消息中间键
-
第10阶段微服务架构
图为jhipster:https://www.jhipster.tech/monitoring/
总体预览
参考资料
尚硅谷SpringCloud
更多推荐
所有评论(0)