15次架构演进实战,让你清晰明白从一个中小企业的项目架构到一个大型互联网平台是如何进行架构演进过程的!
大众创业,万众创业
大多数企业都是中小企业(除 了国内上市公司)
目前中小企业组织系统架构设计存在哪些问题?
1. 通病:企业组织管理混乱
原因:没有完善的企业组织架构(分工和责任不明确)
2. 部门协同差劲
原因:企业没有规范的管理流程,部门之间沟通机会少,企业文化融合氛围不浓等等造成的。
3. 组织效率低:
原因:多方协同出了问题
道 天 地 将
法务实,务虚
初心:解决这个社会的问题,解决某个行业的痛点,我希望来做的更好
使命,愿景,价值观
考核:业绩和价值观 5/5开
组织结构设计
企业战略
扁平化 事业部 阿米巴
权 责 利
中小企业IT系统架构面临的问题:
当业务发生变化:不断的在原有系统上打补丁当业务发展时,系统不断出现各种瓶颈卡顿,数据库经常锁死用户网站打不开,白屏流量一上来就容易挂技术团队的现状
技术团队人数不操作 50人
服务器数量 10 - 30台
带宽:100 MB
中小企业从零开始目前项目开发的现状:
应用系统开发
前端开发 :Vue.js , bootstrap
SSM: SpringMVC , SpringBoot,MyBatis
Tomcat
数据库开发:MySQL: CRUD
测试:开发人员自己测试 没有压测 不清楚系统的负载边界
线上部署:应用服务器和数据库服务器在同一台服务器上Linux环境没有装过JDK,MySQL,如何参数的配置和调优 .
为什么会出现这么多的问题呢?
原因只有一个:企业没有一个优秀的架构师
怎么样才能成为一名优秀的架构师
得有实战经验实战的应用场景
首先:定义当前企业的架构,目前所处的一个阶段并且绘制出 架构图谱
定位问题:根据实际情况制定新的架构图谱(重构)
Tomcat + 数据库部署在同一台服务器上的
问题:- 随着用户增长,tomcat和数据库之间相互竞争服务器资源- 单机性能不足以支撑业务- 整个服务器挂掉
Tomcat 和数据库分别独占服务器资源,显著提高两者的性能
问题:- 用户增长:读写都在同一个数据库 压力很大,数据库就成了瓶颈- 第一步:把应用服务器和数据库进行分离,独立部署,Tomcat和数据库服务器内存扩大数据量小的时候:导出SQL,数据多:数据文件的迁移
引入本地缓存和分布式缓存
Tomcat服务器上或同JVM中增加本地缓存在外部增加分布式缓存缓存热数据和静态html页面通过缓存把大多数的请求在读写数据库前拦截掉会应用到哪些技术栈呢?memcahed 作为本地缓存Redis作为分布式缓存问题:缓存一致性,缓存穿透/击穿,缓存雪崩热点数据集中失效
问题:缓存扛住了大部分用于请求,用户增长,并发的压力就会落到tomcat上 ,响应很慢
多台服务器上分别部署tomcat ,使用Nginx把请求分发到每一个tomcat中
假设:
Tomcat最多支持 100并发Nginx请求分发 500个Tomcat 就能扛住 50000个并发Session共享文件上传下载问题5. 数据库读写分离
读库
写库
MyCat 等等数据库中间件
数据同步,数据一致性问题
问题:- 业务增长,不同业务之间访问差距较大,相互竞争数据库资源,影响性能
6. 数据库按业务分库
问题:- 用户增长:单机的写库会逐渐达到性能瓶颈
商品ID
问题:- 数据库和Tomcat能够水平扩展,Nginx就会成为系统的瓶颈
问题:- LVS单机
通过DNS轮询实现机房间的负载均衡
通过DNS服务器轮询或者其他策略
千万级别到亿级别 通过增加机房来解决
10. 引入NoSQL数据库和搜索引擎
引入NoSQL数据库和搜索引擎
对于全文检索,可变数据结构 数据库天生不适用
海量文件存储:HDFS
Key Value类型的数据:HBase和Redis
全文检索:ElasticSearch
把大应用拆分成小应用
按照业务板块来划分应用代码单个应用职责很清晰,相互之间做到独立升级迭代应用之间会涉及公共配置分布式配置中心 Zookeeper来解决
复用的功能抽离成微服务
13. 引入企业服务总线屏蔽服务接口访问的差异
引入企业服务总线屏蔽服务接口访问的差异
14. 引入容器化技术实现环境隔离与动态服务管理
引入容器化技术实现环境隔离与动态服务管理
目前最流行的技术是Docker
容器管理:K8S
双11来之前:
在现有的机器集群上划分出服务器来启动Docker镜像,增强服务的性能
双11之后:
活动结束后:就可以关闭镜像,对机器上的其他的服务不会造成任何影响
以云平台承载系统
所得系统都部署在公有云上
2019年双十一 天猫 2684亿 阿里巴巴所有核心系统全面上云
IasS : 基础设施即服务
PaaS : 平台即服务,MaxComputer ,Flink - Blink ,Hadoop技术组件
SaaS: 软件即服务 (行业解决方案视频转码服务,邮件服务,个人博客等)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。