文章插图
目前最流行的容器化技术是Docker,最流行的容器管理服务是Kubernetes(K8S),应用/服务可以打包为Docker镜像,通过K8S来动态分发和部署镜像 。Docker镜像可理解为一个能运行你的应用/服务的最小的操作系统,里面放着应用/服务的运行代码,运行环境根据实际的需要设置好 。
把整个“操作系统”打包为一个镜像后,就可以分发到需要部署相关服务的机器上,直接启动Docker镜像就可以把服务起起来,使服务的部署和运维变得简单 。
在大促的之前,可以在现有的机器集群上划分出服务器来启动Docker镜像,增强服务的性能,大促过后就可以关闭镜像,对机器上的其他服务不造成影响(在3.14节之前,服务运行在新增机器上需要修改系统配置来适配服务,这会导致机器上其他服务需要的运行环境被破坏) 。
使用容器化技术后服务动态扩缩容问题得以解决,但是机器还是需要公司自身来管理,在非大促的时候,还是需要闲置着大量的机器资源来应对大促,机器自身成本和运维成本都极高,资源利用率低3.15 第十四次演进:以云平台承载系统
文章插图
系统可部署到公有云上,利用公有云的海量机器资源,解决动态硬件资源的问题,在大促的时间段里,在云平台中临时申请更多的资源,结合Docker和K8S来快速部署服务,在大促结束后释放资源,真正做到按需付费,资源利用率大大提高,同时大大降低了运维成本 。
所谓的云平台,就是把海量机器资源,通过统一的资源管理,抽象为一个资源整体,在之上可按需动态申请硬件资源(如CPU、内存、网络等),并且之上提供通用的操作系统,提供常用的技术组件(如Hadoop技术栈,MPP数据库等)供用户使用,甚至提供开发好的应用,用户不需要关系应用内部使用了什么技术,就能够解决需求(如音视频转码服务、邮件服务、个人博客等) 。在云平台中会涉及如下几个概念:
- IaaS:基础设施即服务 。对应于上面所说的机器资源统一为资源整体,可动态申请硬件资源的层面;
- PaaS:平台即服务 。对应于上面所说的提供常用的技术组件方便系统的开发和维护;
- SaaS:软件即服务 。对应于上面所说的提供开发好的应用或服务,按功能或性能要求付费 。
4. 架构设计总结
架构的调整是否必须按照上述演变路径进行?
不是的,以上所说的架构演变顺序只是针对某个侧面进行单独的改进,在实际场景中,可能同一时间会有几个问题需要解决,或者可能先达到瓶颈的是另外的方面,这时候就应该按照实际问题实际解决 。如在政府类的并发量可能不大,但业务可能很丰富的场景,高并发就不是重点解决的问题,此时优先需要的可能会是丰富需求的解决方案 。
对于将要实施的系统,架构应该设计到什么程度?
对于单次实施并且性能指标明确的系统,架构设计到能够支持系统的性能指标要求就足够了,但要留有扩展架构的接口以便不备之需 。对于不断发展的系统,如电商平台,应设计到能满足下一阶段用户量和性能指标要求的程度,并根据业务的增长不断的迭代升级架构,以支持更高的并发和更丰富的业务 。
服务端架构和大数据架构有什么区别?
所谓的“大数据”其实是海量数据采集清洗转换、数据存储、数据分析、数据服务等场景解决方案的一个统称,在每一个场景都包含了多种可选的技术,如数据采集有Flume、Sqoop、Kettle等,数据存储有分布式文件系统HDFS、FastDFS,NoSQL数据库HBase、MongoDB等,数据分析有Spark技术栈、机器学习算法等 。总的来说大数据架构就是根据业务的需求,整合各种大数据组件组合而成的架构,一般会提供分布式存储、分布式计算、多维分析、数据仓库、机器学习算法等能力 。而服务端架构更多指的是应用组织层面的架构,底层能力往往是由大数据架构来提供 。
有没有一些架构设计的原则?
- N+1设计 。系统中的每个组件都应做到没有单点故障;
- 回滚设计 。确保系统可以向前兼容,在系统升级时应能有办法回滚版本;
推荐阅读
- 分布式系统中这个设计,简单明了,让你的系统更加稳定
- Linux 系统 CPU 占用率较高问题排查思路
- 这篇文章把 Linux 系统讲的如此详细,看完你一定会有质的飞跃
- 手机淘宝首页怎么设置淘宝直播怎么显示 淘宝店铺点开所有宝贝显示直播
- 淘宝不当使用他人的权利怎么处罚 淘宝不当使用他人的权利怎么处罚
- 淘宝直播人流量少了 淘宝直播人数是真的吗还是流量人
- 淘宝发展现状分析 淘宝发展战略分析
- 淘宝直播买大牌化妆品很便宜的是正品吗 为什么淘宝直播卖的化妆品那么便宜
- 淘宝的直播权限开通后是不是永久存在的 淘宝直播达到什么要求就可以开通权限了
- 简述淘宝评价规则 淘宝销量显示规则