这是我参与「第五届青训营」伴学笔记创作活动的第7天
什么是架构-定义
架构又称为软件架构
- 是有关软件整体结构与组件的抽象描述
- 用于指导软件系统各个方面的设计
实现一个软件有很多方法,架构在方法选择上起着至关重要的指导作用
单体架构
软件系统需要具备对外提供服务的功能,单机就是把所有功能都实现在同一个进程中,并且部署到同一台机器上
优点
简单
缺点
运维需要停止服务
C10K问题(Client 10000)即单机同时并发一万请求问题
单体架构-垂直应用|垂直切分
单体架构:分布式部署
垂直应用架构:按应用垂直切分的单体
优点
水平扩容
运维不需要停服
缺点
职责太多,开发效率不高
爆炸半径大
SOA、微服务|水平切分
SOA(Service- Oriented- Architecture)
1、将应用的不同功能单元抽象成服务
2、定义服务之间的通讯标准
微服务架构:SOA的去中心化演进方向
需要解决的问题:
数据一致性
高可用
治理
解耦 vs 过微
企业级后端架构剖析
云计算
云计算是指软件自动化管理,提供计算资源的服务网站,是现代互联网大规模数据分析和存储的基石
基础:
- 虚拟化技术
- 编排方案
架构:
- Iaas
- Paas
- Saas
- Faas
云原生
云原生技术为组织在公有云、自由云、混合云等新型的动态环境中,构建和运行可弹性拓展的应用提供了可能
- 弹性资源(虚拟化容器、快速扩缩容)
- 微服务架构(业务功能单元解耦、统一的通信标准)
- DevOps(敏捷开发、CI|CD)
- 服务网格(业务与治理解构、异构系统的治理统一化、复杂治理能力)
通信标准
- Http(RestFul API)
- RPC(Thrift gRPC)
个人感想
通过本次课程,我认识到了架构在软件开发中的作用,并且对传统的单体服务和现在应用较多的微服务有了一定的了解,还对HTTP协议以及GRPC协议有了一个比较清晰的认知以及对比,对于我后面开发微服务架构打下了基础