1. 传统单体架构、SOA与微服务架构的优缺点对比
传统单体架构与主流的SOA(面向服务的架构)以及新兴的微服务架构在架构设计上存在显著差异,这些差异直接影响了它们的优缺点。
传统单体架构与SOA的缺点:
- 高耦合性:在单体架构和某些SOA实现中,各个模块或服务之间的代码相互调用频繁,导致耦合度高,修改一处代码可能引发多处连锁反应。
- 部署复杂:由于代码库庞大,部署过程繁琐且耗时,特别是在存在串行部署依赖时。
- 稳定性与可用性不足:一旦某个服务或模块出现故障,可能会波及整个系统,导致其他服务也无法正常工作。
- 可扩展性差:难以针对特定模块进行性能优化或扩展,因为整个系统被视为一个整体进行处理。
微服务架构的优点:
- 边界清晰:微服务架构将大型应用拆分为一系列小型、自治的服务,每个服务都有明确的职责和边界,使得开发、测试和维护更加简单。
- 技术栈灵活:微服务架构允许使用多种编程语言和技术栈来构建服务,服务之间通过标准协议进行通信,提高了系统的灵活性和可扩展性。
- 松耦合:微服务之间通过轻量级通信机制(如RESTful API)进行交互,降低了服务之间的耦合度。
- 高可用性:由于每个服务都是独立的,因此一个服务的故障不会影响到其他服务的正常运行,提高了系统的整体可用性。
2. 服务器端与客户端负载均衡的区别
服务器端负载均衡:
服务器端负载均衡是一种常见的负载均衡方式,通常通过反向*服务器(如Nginx)来实现。客户端发送请求到反向*服务器,由反向*服务器根据配置的规则将请求转发到相应的后端服务节点。这种方式的缺点是,当后端服务节点数量较多时,反向*服务器的配置变得复杂且难以维护。新增服务节点需要手动更新配置,增加了运维成本。
客户端负载均衡:
客户端负载均衡是指客户端在发起请求时,根据一定的策略(如轮询、随机等)选择合适的服务节点进行访问。这种方式通常与服务注册与发现机制相结合,服务节点自动注册到注册中心,注册中心维护服务节点的调用地址。客户端在调用服务时,从注册中心获取服务节点的信息,并根据策略选择服务节点。这种方式的优点是自动化程度高,易于扩展和维护。
3. 微服务架构的组成结构
微服务架构通常由多个关键组件组成,包括注册中心、负载均衡、声明式服务调用(如Feign)、容错机制(如Hystrix)、网关(如Zuul,负责权限控制)和配置管理(如Spring Cloud Config)等。在构建微服务架构时,应遵循循序渐进的原则,逐步拆分和重构现有系统,避免期望一步到位带来的风险和复杂性。