架构和基础框架

Dubbo Architecture Roadmap
背景近十年来,互联网服务在社交网络、搜索、电商、O2O、视频、移动和云计算等领域呈现了喷井式发展,伴随而来的是数千万的日订单量、数亿的日活跃用户、数百亿的日消息发送量等海量的业务规模。支撑这些海量的业务规模的则是基于廉价服务器集群的高可用、可伸缩的分布式互联网技术。

架构的演进

随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。

单一应用架构

  • 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。
  • 优点:容易测试、容易部署
  • 缺点:开发效率低、代码维护难、部署不灵活(build时间长)、稳定性不高(牵一发,动全身)、扩展性不够

垂直应用架构

  • 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。

分布式服务架构

  • 当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC、FEIGN)是关键。
  • 旨在支持应用程序和服务的开发,可以利用物理架构。由多个自治的处理元素,不共享主内存,但通过网络发送消息合作。

流动计算架构

当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)是关键。

微服务SOA

实现微服务架构层面来说不一定需要Spring Cloud,国内主流的有两大派系:阿里系Spring Cloud栈。阿里系国内用的非常多,而Spring Cloud是一个微服务的一站式解决方案集成了很多微服务框架。微服务是一种架构风格。

微服务特点

  • a suite of small services 一系列微小的服务共同组成
  • running in its own process 跑在自己的进程里,任何的微服务都有自己独立的进程,互不干扰
  • built around business capabilities 每个服务为独立的业务开发
  • independently deployable 独立部署,互不干扰
  • a bare minimum of centralized management of these services 分布式的管理

阿里系

  • Dubbo 做服务化治理
  • Zookeeper 做服务注册中心
  • Spring MVC or SpringBoot 做基础框架
  • RocketMQ 消息队列

Spring Cloud栈

  • Spring Cloud
  • Netflix Eureka 服务注册发现
  • SpringBoot 基础框架

微服务架构的基础框架/组件

  • 服务注册发现
  • 服务网关(对外屏蔽服务细节,比如后台升级或者有一些变化,但是我对外是无感知的。路由功能,可以将外部请求路由到某个具体的微服务中去,还可以做一些限流和容错功能。做监控、日志、安全)
  • 后端通用服务(中间层服务Middle Tier Service,后端服务在启动的时候将地址信息注册到注册表里面,而前端服务通过查询注册表然后调用后端服务。)
  • 前端服务(边缘服务Edge Service,对后端的服务做必要的聚合裁剪后暴露给外部不同的设备)