当下web项目,在前后端开发模式分离,系统业务复杂,业务功能模块划分,快速集成快速交付的背景下,大多系统已经离不开微服务架构的思想。
微服务的基本思想在于考虑围绕着业务领域组件来创建应用,这些应用可独立地进行开发、管理和加速。在分散的组件中使用微服务云架构和平台,使部署、管理和服务功能交付变得更加简单。
微服务框架主要存在以下优势:
1)降低复杂度:
将原来耦合在一起的复杂业务拆分为单个服务,规避了原本复杂度无止境的积累。每一个微服务专注于单一功能,并通过定义良好的接口清晰表述服务边界;每个服务开发者只专注服务本身,通过使用缓存、DAL 等各种技术手段来提升系统的性能,而对于消费方来说完全透明。
2)可独立部署:
由于微服务具备独立的运行进程,所以每个微服务可以独立部署。当业务迭代时只需要发布相关服务的迭代即可,降低了测试的工作量同时也降低了服务发布的风险。
3)容错率较高
在微服务架构下,当某一组件发生故障时,故障会被隔离在单个服务中。比如通过限流、熔断等方式降低错误导致的危害,保障核心业务正常运行。
4)可扩展性较强
单块架构应用也可以实现横向扩展,就是将整个应用完整的复制到不同的节点。当应用的不同组件在扩展需求上存在差异时,微服务架构便体现出其灵活性,因为每个服务可以根据实际需求独立进行扩展。
在分布式系统中需要处理访问不同服务的压力。
负载均衡(Server Load Balancer)是将访问流量根据转发策略分发到后端多台云服务器(ECS实例)的流量分发控制服务。负载均衡扩展了应用的服务能力,增强了应用的可用性。
负载均衡通过设置虚拟服务地址,将添加的ECS实例虚拟成一个高性能、高可用的应用服务池,并根据转发规则,将来自客户端的请求分发给云服务器池中的ECS实例。
负载均衡默认检查云服务器池中的ECS实例的健康状态,自动隔离异常状态的ECS实例,消除了单台ECS实例的单点故障,提高了应用的整体服务能力。此外,负载均衡还具备抗DDoS攻击的能力,增强了应用服务的防护能力。
负载均衡由以下三个部分组成:
负载均衡实例 (Server Load Balancer instances)
一个负载均衡实例是一个运行的负载均衡服务,用来接收流量并将其分配给后端服务器。要使用负载均衡服务,您必须创建一个负载均衡实例,并至少添加一个监听和两台ECS实例。
监听 (Listeners)
监听用来检查客户端请求并将请求转发给后端服务器。监听也会对后端服务器进行健康检查。
后端服务器(Backend Servers)
一组接收前端请求的ECS实例。您可以单独添加ECS实例到服务器池,也可以通过虚拟服务器组或主备服务器组来批量添加和管理。
在访问数据内容时,需要高速的访问策略,以响应客户的使用体验,所以需要引入缓存。以redis为例
Redis是一个基于键值(K-V)的高速缓存软件。平台在访问配置信息、字典信息、用户信息等通用信息时,经常查询数据库才能获取相应数据,但是这种访问数据库的效率是非常低的,尤其是在高并发访问的情况下极有可能造成数据库进程堵塞、宕机等重大故障。通过redis缓存技术将平台公共访问的数据放到redis中存储,可极大的提升访问效率,降低了数据库的访问频率。
阿里云数据库 Redis 版(ApsaraDB for Redis)是兼容开源 Redis 协议标准、提供内存加硬盘的混合存储方式的数据库服务,基于高可靠双机热备架构及可平滑扩展的集群架构,满足高读写性能场景及弹性变配的业务需求。
redis支持多种复杂的数据结构,如:List,set,sorted set等,同时redis具有持久性功能。Redis的优点如下:
数据存储在内存中的高速缓存,在应用中用来实现高效的响应用户请求
支持对复杂数据库结构的高速操作
内建复制(replication)及其集群(cluster)
就地更新操作,而无需停机重启生效
支持持久缓存,常用的有RDB和AOF
部署架构(以某电商系统为例):