vlambda博客
学习文章列表

单机应用到分布式架构演进

传统单机-分布式架构演进历史

单机架构

  • 优点: 易于测试 便于集成 小型项目友好

  • 缺点: 开发速度慢 启动时间长 依赖庞大

单个节点部署

集群部署

单机应用到分布式架构演进

分布式架构

  • SOA :Service Oriented Architecture 面向服务的架构 其中包含多个服务, 服务之间通过相互依赖最终提供一系列的功能, 一个服务通常以独立的形式存在于操作系统进程中, 各个服务之间通过网络调用。

  • 微服务:将一个大的单体应用进行细粒度的服务化拆分,每个拆分出来的服务各自独立打包部署,各个服务之间通过网络调用。

  • 优点

    • 易开发、理解和维护

    • 独立的部署和启动

  • 缺点

    • 分布式系统-》分布式事务问题

    • 需要管理多个服务-》服务治理

微服务全家桶架构组成

微服务核心组件图

常见组件

网关

  • 路由转发 + 过滤器

    • /api/v1/video/ 视频服务 

    • /api/v1/order/ 订单服务 

    • /api/v1/user/ 用户服务

服务发现注册

  • 调用和被调用方的信息维护 

配置中心

  • 管理配置,动态更新 application.properties

链路追踪

  • 分析调用链路耗时 例子:下单-》查询商品服务获取商品价格-》查询用户信息-》保存数据库

负载均衡器

  • 分发流量到多个节点,降低压力

熔断

  • 保护自己和被调用方

业界微服务架构常见解决方案

ServiceComb

  • 华为内部的CSE(Cloud Service Engine)框架开源, 一个微服务的开源解决方案,社区相对于下面几个比较小

  • 文档不多,通信领域比较强

dubbo

  • zookeeper + dubbo + springmvc/springboot

  • 配套

    • 通信方式:rpc

    • 注册中心:zookeper/redis/nacos

    • 配置中心:diamond、nacos

SpringCloud

  • 全家桶+轻松嵌入第三方组件(Netflix 奈飞)

  • 官网:https://spring.io/projects/spring-cloud

  • 配套

    • 通信方式:http restful

    • 注册中心:eruka

    • 配置中心:config

    • 断路器:hystrix

    • 网关:zuul/gateway

    • 分布式追踪系统:sleuth+zipkin

Spring Alibaba Cloud

  • 全家桶+阿里生态多个组件组合+SpringCloud支持

  • 官网 https://spring.io/projects/spring-cloud-alibaba

  • 配套

    • 通信方式:http restful

    • 注册中心:nacos

    • 配置中心:nacos

    • 断路器:sentinel

    • 网关:gateway

    • 分布式追踪系统:sleuth+zipkin