欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

2.系统架构演进

程序员文章站 2022-03-16 14:46:08
艾编程架构课程第二节笔记项目演进过程项目实施阶段项目技术覆盖大型互联网系统的特点与设计思想1.大型互联网系统的特点2.大型互联网系统的设计思想3.大型互联网系统架构演变历程初始化单机架构:第一次演进:Tomcat与数据库分开部署第二次演进:引入本地缓存和分布式缓存第三次演进:引入反向代理实现负载均衡第四次演进:数据库读写分离第五次演进:数据库按业务分库第六次演进:把大表拆分为小表第七次演进:使用LVS或F5来使多个Nginx负载均衡第八次演进:通过DNS轮询实现机房间的负载均衡第九次演进:引入NoSQL数据...

项目演进过程

2.系统架构演进

项目实施阶段

2.系统架构演进

项目技术覆盖

Springboot、MyBatis、Redis、Nginx、ES搜索引擎、FastDFS、分布式会话、单点登录、RabbitMQ消息队列列、MyCat、Sharding-Jdbc、分布式锁设计、分布式全局id设计、分布式事务和数据一致性、分布式限流、Springcloud G版微服务、Dubbo、Jenkins、Docker、k8s、容器器弹性扩容、JVM性能调优、MySQL性能优化、Tomcat性能调优、Linux性能优化等,以上技术栈覆盖了了市面上90%的技术内容

大型互联网系统的特点与设计思想

1.大型互联网系统的特点

高并发:一个网站还是系统,从小到大的过程

高可用:HA,高可用的核心就是冗余,SLA,7*24不不间断的服务

大数据:就是为了做用户画像,还有就是做用户行为分析

迭代周期短:越是大型的系统,越不能闭门造车,1-2周就需要产生一个迭代成果

用户量庞大:系统支持用户服务非常巨大

可持续发展:任何一个系统都需要不断升级

安全别高:系统只要上线,并且用户量增大,访问量上去了,后门,漏洞,XSS,CSRF,注入

可弹性、可伸缩:流量是动态,系统如果不能解决突发流量,就非常危险

吞吐量高:

2.大型互联网系统的设计思想

解 耦 : MVC,项目解耦:逻辑流程上的, 架构解耦:是基于业务

集群: 解决基础服务能力

CDN: 是一种加速的服务,按照流量收费,cloudfront,OSS user->应用(静态资源)->数据库

缓 存 : Redis,对我们核心数据库进行保护

分布式系统: 都是为了解决单一节点的应用瓶颈

异步: Ajax,MQ:一般是应用在后端写压力过大的情况

业务分离: 按照业务进行拆分,然后相应团队进行维护

容灾: 数据上的灾备,这个更重要

3.大型互联网系统架构演变历程

初始化单机架构:

2.系统架构演进

第一次演进:Tomcat与数据库分开部署

2.系统架构演进

第二次演进:引入本地缓存和分布式缓存

2.系统架构演进

第三次演进:引入反向代理实现负载均衡

2.系统架构演进

第四次演进:数据库读写分离

2.系统架构演进

第五次演进:数据库按业务分库

2.系统架构演进

第六次演进:把大表拆分为小表

2.系统架构演进

第七次演进:使用LVS或F5来使多个Nginx负载均衡

2.系统架构演进

第八次演进:通过DNS轮询实现机房间的负载均衡

2.系统架构演进

第九次演进:引入NoSQL数据库和搜索引擎等技术

2.系统架构演进

第十次演进:大应用拆分为小应用

2.系统架构演进

第十一次演进:复用的功能抽离成微服务

2.系统架构演进

第十二次演进:引入企业服务总线ESB屏蔽服务接口的访问差异

2.系统架构演进

第十三次演进:引入容器化技术实现运行环境隔离与动态服务管理

2.系统架构演进

第十四次演进:以云平台承载系统

2.系统架构演进

研发到架构师的蜕变&架构师需要具备的技术栈能力

技术方面:

1.语言基础:JVM、GC、IO、类加载、并发多线程、框架、AOP、IOC、线程安全,

2.脚本语言:shell、js、python

3.架构设计:要素、模式、架构演进

4.开发工具:IDE(Eclipse,IDEA),Git、Svn、Jenkins、Maven、Gradle、JIRA、Wiki

5.负载均衡:DNS、Nginx、F5、LVS、HAProxy,(HA:keepalived)

6.设计模式

7.数据结构与算法

8.运维和测试:监控、日志、测试

9.分布式服务:理论(SOA、微服务理理论)、springcloud、dubbo、通信机制、

​ 服务治理、API网关、Netty

10.虚拟化:Docker、IaaS、PaaS、SaaS、k8s

11.中间件:容器器、MQ、缓存、数据库、NoSQL

12.一致性:锁、强一致性、分布式一致性、一致性算法、分布式事务

13.大数据:ETL

还有方案评估:评估各种风险尤其发布阶段要进行深入关注

在实际工作中如何进行系统架构

一:先做背景调查

1.系统所用的技术栈

2.团队管理的流程(这里是和项目经理沟通的地方)

3.需求的开发模式:基于传统的还是基于敏捷(这里就是和产品沟通的地方)

4.系统所处的架构阶段

5.和业务沟通 ,了解业务所面临的技术难题:业务人员、BOSS、客户

6.寻找业务的复杂度的点

什么叫复杂度: 一个系统到底问题来源是哪里

复杂度的来源: 高性能,高可用,可扩展性,低成本, 安全

二:知道问题本身

1.制定方案

时间成本、技术成本、应该采用最适合或能最快速解决问题的方式

一定要有备选方案:3-5个为佳

2.评估和选择

最简派:基于时间的

最牛派:炫技,甲方项目

最熟派:用于成本方面

领导派:权衡利弊

​ 业务也不一定全面理解,

​ DID、N+1

​ 在没有明确数据节点和时间成本要求的情况下,一般不会有最真实的意图和决策的

​ 数据量化很重要

3.实施

4.优化

5.PDCA

本文地址:https://blog.csdn.net/weixin_42031645/article/details/108200530

相关标签: 学习笔记