Java项目架构演进和SpringCloud总结
Java项目架构演进过程和SpirngCloud知识总结:
技术梳理
- 开发技术栈以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
Java项目架构演进和SpringCloud总结相关推荐
- 大型Java项目架构演进
为什么80%的码农都做不了架构师?>>> 大型Java项目架构演进过程 1. All-In-One (所有服务在一台服务器上): 也就是所有的服务都在同一个服务器上,包括应用服 ...
- 大型Java项目架构演进(小白)
大型Java项目架构演进(小白) 增加服务器 大部分的访问都在小部分的数据(缓存)上 增加缓存(具有哪种业务特点的数据适合使用缓存) 远程缓存 远程单机缓存 远程分布式缓存 (集群) 分布式缓存在 ...
- 架构系列一:大型项目架构演进过程
架构系列一:大型项目架构演进过程 作为一名程序员,单单只会Coding是远远不够的,想要走的更高更完,还必需懂Coding之外的其他东西,如架构设计,系统分析等,今天就架构这块,谈谈自己的理解 一.单 ...
- Java项目架构类型与项目分类
Java项目架构类型 JavaEE企业级应用经过多年的发展,出现了很多不同的架构类型, Java应用架构发展主要经历了一下四段历程,分别是单一应用架构,垂直应用架构,分布式服务架构和流动计算架构 单一 ...
- Java项目架构演变:单体应用-SOA-微服务
单体应用 概览 所有功能全部打包在一起.大部分是一个jar包或者war包,随着业务发展功能增多,这个项目会越来越臃肿 优点 容易开发,测试,部署,适合项目初期试错 缺点 复杂性高:代码多,十万行,百万 ...
- Android项目架构设计深入浅出
简介:本文结合个人在架构设计上的思考和理解,介绍如何从0到1设计一个大型Android项目架构. 作者 | 璞珂 来源 | 阿里技术公众号 前言:本文结合个人在架构设计上的思考和理解,介绍如何从0到1 ...
- Android 项目架构设计深入浅出
前言:本文结合个人在架构设计上的思考和理解,介绍如何从0到1设计一个大型Android项目架构. 一 引导 本文篇幅较长,可结合下表引导快速了解全文主脉络. 二 项目架构演进 该章节主要对一个Andr ...
- 抖音、美团等大厂千万级用户的Android客户端架构演进之路—
在移动开发中,对开发者来说不同的人具有不同的能力.就像读一本书一样,一千个读者,有一千个哈姆雷特.但不管怎样,只要你是个软件开发者你就必须学习windows或Linux等操作系统的运行原理.Andro ...
- SpringCloud Alibaba实战第一课 架构演进之路
开篇词 Spring Cloud Alibaba 未来的微服务生态标准 你好,我是老齐,一名从业近 20 年的 IT 老兵,曾在京东.财政部.宜信.工商银行等机构从事架构设计与核心研发工作,有多个亿级 ...
最新文章
- 一个简单的Dockerfile
- tyvj 1059 过河 dp
- redis源码剖析(十二)—— RDB持久化
- 根据导出的查询结果拼接字符串,生成sql语句并保存到txt文件中
- python自动化测试-Python自动化测试入门,看这一篇就足以
- 【资源】图深度学习文献列表
- 线性代数学习笔记——矩阵主要公式
- WEBGIS开发 CityEngine使用 Cesium白膜纹理 夜景效果 城市模型展示
- 微信小程序下拉刷新不回弹
- Asp.net +jQuery +ajax 传参问题
- <个人学习记录>斑点检测
- java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:MaxGCPauseMillis=100/虚拟机调优
- 分布式系统与 Google 早期的三篇论文
- 如何用java做一个桌面游戏
- android 环形时间显示_Android自定义波浪加载圆形进度条——(自定义控件 一)...
- python横向条形图_seaborn做横向条形图
- Java程序员必备基础:内部类解析
- IDL--辐射定标(Radiometric Calibration )
- 【4如何添加Oracle数据库ORCL2新实例】
- Java学习----习题练习,字符流
热门文章
- wordpress发布模块_微慕WordPress小程序专业版v3.0发布
- c# 多线程单例模式_单例模式,多线程单例,双重锁定单例,工场单例创建上下文...
- glide加载图片闪烁_html5 canvas绘制图片
- java同时输出多个数字_java从命令行接收多个数字,求和之后输出结果
- 最大连续1的个数 三 窗口大小固定,逻辑连续但实际上并不连续的滑动窗口
- python-opencv学习第二章
- Python -- 数据加载、存储与文件格式
- Long Way To Go 之 Python 5 (2)
- Python高手之路【十】python基础之反射
- Python爬虫之环境安装