JAVA架构的演变介绍
什么是架构
1、对系统进行有序化重构
2、分与合的过程
横向的(水平) 水平分表,数据分到多个表里面,比如1000w数据 ,拆分成多个小表数据
纵向的(垂直) 列数比较多的表,拆分成多个小表存储不通数据
大的系统 --> 拆分成很多个子系统,模块,组件
架构内容
1、技术(基础架构组) --> 对源码改造,更加适合开发需求
2、应用架构(面向业务层次)
3、系统架构 (运维)
架构师具备的能力
1、管理能力,人员协调;
2、技术实力,技术深度和技术面的认识;
3、沟通表达能力
4、抽象思维
架构师要做的事情
1、业务场景分析:用例图、流程图、时序图
2、技术的选型(开源)
3、技术规格说明书
4、线下架构峰会,扩宽你的你的眼界
架构演进(Java演变:jsp/servle --> ssh --> spring boot --> spring cloud)
1、用户量、业务复杂度、数据量
2、
1、数据库优化,sql
2、读写分离,读和写进入到不通数据库(mycat,shardingjdbc) 封库分表
3、搜索引擎 Elasticsearch ,Solr, Lucene
4、数据库
数据库
TIDB
PG
TDSql
OceanBase
缓存
MongoDB
Hbase
cassandra
redis
memcached
文件存储
FASTDFS
OSS
COS
5、数据库优化-拆分
水平拆分 水平分表,数据分到多个表里面,比如1000w数据 ,拆分成多个小表数据
垂直拆分 列数比较多的表,拆分成多个小表存储不通数据
冷热数据库分离,
带来的问题
跨表查询,查询的条件不是分片键的时候怎么办?
分布式事物问题?
6、业务的垂直化拆分
电商服务 : 库存,订单,交易 服务拆分; 每一个服务都是独立的单体架构
问题: 每个服务数据冗余
演变:把公共服务抽离出来, 库存服务,订单服务,交易服务
面相服务SOA: 解决信息孤岛【数据不共享】、服务复用 问题 (面相服务SOA≈ 微服务架构)