软件的架构定义及形态:
架构:
软件整体结构与组件抽象的描述一直到软件系统各方面的设计,也就是一份基础性的设计纲领。
依靠架构夯实地基,软件就是依靠其而建起的大厦。
架构的演进通常由增长的需求量和需求的复杂性所驱动。
关于微服务架构的类型和优点,微服务架构笔记已有记录。
[微服务的架构原理(随堂笔记)|青训营 - 掘金 (juejin.cn)]
随着业务的发展和规模的扩大,系统需要处理更多的数据、用户和交互。 比起将其作为单体架构独立运维,将其进行拆分成独立的服务和模块可以有效的进行团队协作和开发部署以满足不断增长的新需求
剖析:
在前期发展巩固好基本盘之后需要继续重新思考日后的发展方向 就比如蛋糕店的扩张 店面的扩张(分公司),人才的招聘(人事),工艺的调整(盈利途径),工作的重心(策略)都是要考虑的点
云计算的引入
云计算:无需拥有专业的IT基础设施通过申请即可低成本便捷地访问使用网络资源,经济成本低。
大概可以追溯到二十年前的马云的豪赌,那时候确实不被看好,现在倒是普遍认可了
旗下四个服务的通俗化解释
基础设施即服务Iaas(不需在意物理资源是否拥有,设施共有)
平台即服务Paas(直接提供完善服务如已装潢好的家)
软件即服务Saas(经验丰富的助手,专业的你放心)
函数即服务Faas(自动化生产)
云原生的服务体验:
通过云计算我们可以获得云原生的体验,从而大幅提高服务的质量,为资源的弹性调配,后期服务的优化以及治理提供了极高的便利性。
弹性计算资源
服务资源调度
烤箱般使用率高,服务占比高,而微服务就像手机小和面和雕花,分配较少资源,目的还是为了响应不同的需求。
计算资源调度
热销榜单(在线计算调用以满足即时的需求 )
热销榜单更新(需要离线资源调用得出之后再进行展示)
消息队列
(实现大吞吐量和简化环节)
(消息队列的具体笔记已有记录
针对在线的消息进行生产者消费者解耦,削峰
针对离线的消息收集中转后进行大数据分析
弹性存储资源
存储就如同服务,搭建业务进程中,需要哪种找对应的存储类型存储就行
存储视频,用对象存储
存储用户消费记录就用大数据存储
收银记录就用关系型数据库:
元数据:服务发现;
······
总之就是根据类型,存储对应类型
DevOps测试
DevOps是一种由来已久的软件开发和运维的组织文化和方法论。
立足前人的成果和经验,以及现有的开源的方案,通过将开发、测试和部署过程整合在一起,实现快速迭代和高质量的软件交付
从设计,开发,测试到上线,调优重构,后续的开源和赋能都会有其作用体现, 目的在于开发效率的提升。
微服务的架构
关于微服务架构先前笔记已有记录,这里不做过多赘述。
需要注意的是: 在云原生背景下,微服务架构不大需要以复杂逻辑进 行,大可交给体系内成熟的框架进行。
服务网格业务治理能力
服务网格在云原生中的作用是提供对微服务之间通信的控制、可观察性和安全性。它能够解耦业务代码和治理功能,使得不同开发语言的微服务能够遵循统一的标准进行通信。
服务网格的优势之一是实现了异构系统的治理统一化。不同编程语言和框架实现的微服务可以通过服务网格的统一代理层进行通信,无需修改现有代码。这样一来,开发人员可以专注于业务逻辑的开发,而不需要过多关注通信细节和不同语言之间的差异。
云原生蛋糕店实例
入口(大众点评),消费者了解,吸引前往实体发出需求,节点从已有缓存中取对应需求的产品,否则击穿到下一层,从主店(本地磁盘特定位置)取,期间继续更新缓存不影响业务的有序运营;同步进行数据的采集和分析,根据在线的消息采用激励政策,根据离线的消息收集中转到对应处理系统进行大数据分析,以供优化服务和研发新品。
挑战
尽管云原生具有诸多的便利性,但世界没有完美的事物,随着互联网的发展和需求的激增,难免遇到挑战: 基础设施:
- 物理资源是受限的(机器数量,带宽) -- 资源利用率受制于部署服务 用户层面:
- 网络通信开销较 -- 网络抖动的运维成本
- 异构环境下(新老机器算力),不同实例资源不均
解决措施
以下列举一些解决措施以供简单科普(接触太少,总结也可能不到位,不敢落笔太多了,作简单解释): 离在线资源并池:利用在线业务和离线业务的特点,进行资源调配
核心收益:减低物理成本,提供更多的弹性资源
*在线业务特点:io密集型,潮汐性,实时性 离线业务:计算密集型,非实时性 *
自动扩缩容:利用在线业务潮汐性自动扩缩容(需要事先通过统计计算除使用频率波次,比如早晚双高峰提供较多子u按,其余时间段就提供较少资源)
核心收益:减低业务成本
微服务亲和性部署:满足亲和性的容器调度导医台宿主机,微服务中间件与服务网格通过共享内存通信,使用服务网格控制,便于动态的流量调度 核心收益:减低业务成本,提高服务可用性
流量治理:微服务中间件&服务网格的流量治理 核心收益: 提高微服务调用容错性,提高容灾能力,进一步提高开发效率(需要充分运用DevOps)
CPU水位负载均衡:维持CPU水位负载均衡,利用Iaas提供的资源探针,使用服务网格:动态负载均衡
核心收益:打平异构换进算力差异,为自动扩缩容提供正向输入
总结:
架构不断演进的,其核心是为了更加完善的服务响应机制和协同开发机制,针对量级增长的市场环境,确定好合适的架构是重要的。