Java项目架构演进过程和SpirngCloud知识总结:

技术梳理

  1. 开发技术栈以SpringCloud为主,单个微服务模块以SpringMVC+SpringBoot/Spring+MyBatis组合进行开发
  2. 前端层,页面H5+thymeleaf/样式CSS3+Bootstrap/前端框架JQuery+Node|Vue等
  3. 负载层,前端访问通过Http或Https协议到达服务端的LB,可以是F5等硬件做负载均衡,还可以自行部署LVS+Keepalived等(前期量小可以直接使用Nginx)
  4. 网关层,请求通过LB后,会到达整个微服务体系的网关层Zuul(Gateway),内嵌Ribbon做客户端负载均衡,Hystrix做熔断降级等
  5. 服务注册,采用Eureka来做服务治理,Zuul会从Eureka集群获取已发布的微服务访问地址,然后根据配置把请求代理到相应的微服务去
  6. docker容器,所有的微服务模块都部署在Docker容器里面,而且前后端的服务完全分开,各自独立部署后前端微服务调用后端微服务,后端微服务之间会有相互调用
  7. 服务调用,微服务模块间调用都采用标准的Http/Https+REST+JSON的方式,调用技术采用Feign+HttpClient+Ribbon+Hystrix
  8. 统一配置,每个微服务模块会跟Eureka集群、配置中心(SpringCloudConfig)等进行交互
  9. 第3方框架,每个微服务模块根据实现的需要,通常还需要使用一些第三发框架,比如常见的有:缓存服务(Redis)、图片服务(FastDFS)、搜索服务(ElasticSearch)、安全管理(Shiro)等等
  10. 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. 第1-2阶段

    随着访问量的增加,单台服务器无法满足需求,在假设数据库服务器没有压力的情况下,我们把应用服务器从一台变成两台或者多台,把用户的请求分散到不同的服务器上,提高负载均衡.

  3. 阶段2-1

    该阶段引入了Nginx他的主要功能是:反向代理+动静分离+分在均衡

  4. 阶段2-2Niginx+应用服务器配置集群+HA

  5. 阶段3负载均衡服务器配置集群

  6. 阶段4CDN+Varnish服务器配置集群

  7. 阶段5数据库读写分离

  8. 阶段6NOSQL+分布式搜索引擎

  9. 阶段7NOSQL(HA)+分表分库+MyCat

  10. 第8阶段分布式文件系统存储图片等

  11. 第9阶段应用服务化拆分+消息中间键

  12. 第10阶段微服务架构

图为jhipster:https://www.jhipster.tech/monitoring/

总体预览

参考资料

尚硅谷SpringCloud

Java项目架构演进和SpringCloud总结相关推荐

  1. 大型Java项目架构演进

    为什么80%的码农都做不了架构师?>>>    大型Java项目架构演进过程 1. All-In-One (所有服务在一台服务器上): 也就是所有的服务都在同一个服务器上,包括应用服 ...

  2. 大型Java项目架构演进(小白)

    大型Java项目架构演进(小白) 增加服务器 大部分的访问都在小部分的数据(缓存)上 增加缓存(具有哪种业务特点的数据适合使用缓存)  远程缓存 远程单机缓存 远程分布式缓存 (集群)  分布式缓存在 ...

  3. 架构系列一:大型项目架构演进过程

    架构系列一:大型项目架构演进过程 作为一名程序员,单单只会Coding是远远不够的,想要走的更高更完,还必需懂Coding之外的其他东西,如架构设计,系统分析等,今天就架构这块,谈谈自己的理解 一.单 ...

  4. Java项目架构类型与项目分类

    Java项目架构类型 JavaEE企业级应用经过多年的发展,出现了很多不同的架构类型, Java应用架构发展主要经历了一下四段历程,分别是单一应用架构,垂直应用架构,分布式服务架构和流动计算架构 单一 ...

  5. Java项目架构演变:单体应用-SOA-微服务

    单体应用 概览 所有功能全部打包在一起.大部分是一个jar包或者war包,随着业务发展功能增多,这个项目会越来越臃肿 优点 容易开发,测试,部署,适合项目初期试错 缺点 复杂性高:代码多,十万行,百万 ...

  6. Android项目架构设计深入浅出

    简介:本文结合个人在架构设计上的思考和理解,介绍如何从0到1设计一个大型Android项目架构. 作者 | 璞珂 来源 | 阿里技术公众号 前言:本文结合个人在架构设计上的思考和理解,介绍如何从0到1 ...

  7. Android 项目架构设计深入浅出

    前言:本文结合个人在架构设计上的思考和理解,介绍如何从0到1设计一个大型Android项目架构. 一 引导 本文篇幅较长,可结合下表引导快速了解全文主脉络. 二 项目架构演进 该章节主要对一个Andr ...

  8. 抖音、美团等大厂千万级用户的Android客户端架构演进之路—

    在移动开发中,对开发者来说不同的人具有不同的能力.就像读一本书一样,一千个读者,有一千个哈姆雷特.但不管怎样,只要你是个软件开发者你就必须学习windows或Linux等操作系统的运行原理.Andro ...

  9. SpringCloud Alibaba实战第一课 架构演进之路

    开篇词 Spring Cloud Alibaba 未来的微服务生态标准 你好,我是老齐,一名从业近 20 年的 IT 老兵,曾在京东.财政部.宜信.工商银行等机构从事架构设计与核心研发工作,有多个亿级 ...

最新文章

  1. 一个简单的Dockerfile
  2. tyvj 1059 过河 dp
  3. redis源码剖析(十二)—— RDB持久化
  4. 根据导出的查询结果拼接字符串,生成sql语句并保存到txt文件中
  5. python自动化测试-Python自动化测试入门,看这一篇就足以
  6. 【资源】图深度学习文献列表
  7. 线性代数学习笔记——矩阵主要公式
  8. WEBGIS开发 CityEngine使用 Cesium白膜纹理 夜景效果 城市模型展示
  9. 微信小程序下拉刷新不回弹
  10. Asp.net +jQuery +ajax 传参问题
  11. <个人学习记录>斑点检测
  12. java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:MaxGCPauseMillis=100/虚拟机调优
  13. 分布式系统与 Google 早期的三篇论文
  14. 如何用java做一个桌面游戏
  15. android 环形时间显示_Android自定义波浪加载圆形进度条——(自定义控件 一)...
  16. python横向条形图_seaborn做横向条形图
  17. Java程序员必备基础:内部类解析
  18. IDL--辐射定标(Radiometric Calibration )
  19. 【4如何添加Oracle数据库ORCL2新实例】
  20. Java学习----习题练习,字符流

热门文章

  1. wordpress发布模块_微慕WordPress小程序专业版v3.0发布
  2. c# 多线程单例模式_单例模式,多线程单例,双重锁定单例,工场单例创建上下文...
  3. glide加载图片闪烁_html5 canvas绘制图片
  4. java同时输出多个数字_java从命令行接收多个数字,求和之后输出结果
  5. 最大连续1的个数 三 窗口大小固定,逻辑连续但实际上并不连续的滑动窗口
  6. python-opencv学习第二章
  7. Python -- 数据加载、存储与文件格式
  8. Long Way To Go 之 Python 5 (2)
  9. Python高手之路【十】python基础之反射
  10. Python爬虫之环境安装