显然,服务端后端架构涉及的技术非常多而且复杂,每一位读者的知识背景又不太相 同,所以这里不可能一一列举所有使用到的技术。但为了让读者更好地理解后续章节的内容,这里预先简单介绍本书中引入的一些关键技术,如需要更详细的信息,请读者查看附录提供的内容或网上自行搜索相关的资源来补充。
Docker
Docker 是 2013 年开源的应用容器引擎,开发者可以根据配置文件把应用及依赖包放 到一个可移植的容器中,然后发布到一定版本以上的任何流行的 Linux 机器上,实现轻量 级别的虚拟化。容器完全使用沙箱机制,通过镜像来保证运行环境的一致性,启动速度在 秒级别之内,以更好地满足云计算的自动化及弹性扩容等场景。
使用 Docker 可以:
保证环境一致性,使应用的构建与部署自动化。
提供轻量级别的 PaaS 环境使之持续集成效率更高。
通过镜像服务提供完整的软件运行环境,开箱即用。
单个容器承担独立的职责,轻量级,启动速度快。
标准的镜像服务为多云部署能力提供基础条件。
Kubernetes
一个产品通常由多个应用组成,容器只是提供一个应用服务的能力,需要把多个应用 组合编排起来才能提供服务。Kubernetes 是自动化编排容器应用的开源平台,这些操作不 仅包括部署、调度和节点集群间扩展,还包括服务发现和配置服务等架构支持的基础能力。 此外,Kubernetes 不仅支持 Docker,还支持 Rocket 等不同的底层容器技术。
使用 Kubernetes 可以:
提供空间(Namespace)级别环境隔离,自动化编排多个容器的部署。
根据应用负载压力,随时扩展或收缩容器规模及副本数。
将容器抽象成服务层(Service),服务间提供负载均衡和发现的能力。
提供滚动升级的能力,很容易地升级应用程序容器的新版本,失败时自动回滚。
提供 Pod 的组合多个容器,共享内核资源。
CDN
CDN(Content Delivery Network,内容分发网络)是内容网络提供商部署在各城市机 房里面的一种服务。它能在用户请求网站服务时,根据用户的来源从距离自己最近的网络提供商获取数据,减少网络路由等开销,应用在视频网站、软件下载和内容网站的热点内 容的场景。
使用 CDN 可以:
加速网站或应用的静态内容分发,提升网站的访问速度和服务可用性。
减轻源站负载,提高文件下载速度,减少用户下载时间。
分摊流量,节省成本,特别是提升用户在不同范围内的视音频体验。
负载均衡
负载均衡是将负载(用户的请求)根据设定的策略,将请求流量进行分发,扩展应用 集群对外的服务能力,提高应用的可用性。既可以提升服务器的响应速度及利用效率,又 能避免出现单点失效,检查后端服务的正确性,保证用户请求的正常响应。
负载均衡的作用如下。
请求分流,提供 4 层和 7 层负载均衡能力。
支持自定义转发规则,支持基于域名和 URL 的转发。
动态调整转发规则,适配节点变化,自动移除异常节点。
保持请求的亲和性,支持会话保持或灰度发布。
除了硬件级别的负载均衡,常见的互联网架构主要是使用 4 层和 7 层的负载均衡,常 使用的软件负载有 LVS、HAproxy、Nginx 等。LVS 工作在第 4 层,在网络层利用 IP 地址 进行转发。Nginx 工作在第 7 层,根据用户的 HTTP 请求(比如根据 URL、消息头)来转 发,而 HAProxy 工作在第 4 或 7 层,两者都支持。
数据库及缓存服务
之前最常见数据存储服务的一般指关系型数据库,后来随着互联网业务的发展,逐渐 产生了非关系型数据,比如 NoSQL 或 KV 缓存等。关系型数据库提供创建、更新、查询和 删除等基本操作,并满足 ACID 的特性,常见的关系型数据库有 MySQL、SQL Server、Oracle 和 PostgreSQL 等数据库,使用最广泛的非 MySQL 莫属。缓存一般是直接将数据放到离计 算最近的地方,目前大部分放在内存中,解决 CPU 和 I/O 的速度不匹配的问题,用来加快 计算处理速度,通常会对热点数据进行缓存,保证较高的命中率,包括 Memcached 和 Redis,Redis 在互联网行业中使用最为广泛。数据库及缓存作用如下。
提供持久化或非持久化的数据存储的能力。
支持操作监控统计,数据的联机备份与恢复,保证高可靠。
提供场景化的应用,如缓存提供原生的计数,实现计数服务。
在互联网的架构设计中,数据库及缓存一般相互配合使用来满足不同的场景需求,比 如在大流量的请求中会使用缓存来加速,但需要注意缓存预热和缓存穿透等问题。
应用性能管理(APM)
APM 是通过打点或探针技术实现企业的关键应用进行监测,并 提供解决的建议和优化 措施,甚至可以生成请求拓扑图,能明显提高企业应用的可靠性和质量,提前发现不健康 的服务并处理,保证用户得到良好的服务体验,使一个企业的关键业务应用的质量更强。
APM 主要应用在以下方面。
服务自运维,监控各种资源指标,比如 CPU、内存、磁盘和网络等。
服务框架自省依赖关系统计,前台系统访问路径,慢响应等。
根据关键特征进行分布式事务跟踪,实现跨应用的业务追踪。
全链路提供从应用性能监测到终端用户体验分析。
小 结
云计算给各行各业带来的影响越来越大,从之前的不愿意到现在的主动上“云”,技术 人员对云计算的认识也正在发生巨大的改变。无论任何类型的企业,上“云”是必经之路, 无非是公有云或私有云区别,因此,企业急切需要根据“云”带来的优势对技术架构进行 适当的调整设计来更好地满足业务的发展。在中国,面对非常复杂的技术环境和人口规模 的红利,越来越细的业务分工,大规模的稳定系统架构设计和业务需求快速发展的矛盾是 技术人员和管理人员需要解决的,接下来的各章节主要围绕这一主题来进行详细的阐述。
文章节选自《云原生应用架构实践》 网易云基础服务架构团队 著
相关阅读: