场景演示

这里我们假设了一组场景,看看在每个阶段、每个场景下,Flomesh如何帮助我们管理应用流量。背景和这组场景是这样的:

“好运来”是一个初创的互联网公司,主要的业务是在网络上提供礼品服务;或者说,就是一个网站,用户可以在上边采购“礼品”送给别人。他们的事业顺利,发展很快,“网站”经过了如下一些阶段:

  1. 在网站建立的初期,公司的CTO(是的,CTO也是唯一的工程师)基于某个知名的PHP框架开发了网站。所有的功能都在一起,用户登陆分为“普通用户”和“后台管理员”,大家通过浏览器界面访问系统,PHP访问共同的数据库,为不同的用户返回不同的页面。可喜的是,“网站”的访问量增长很快。为了应对增长的访问量,CTO把初期的PHP+MySQL的结构做了一些改进:
    • 采用缓存(cache)提高访问速度
    • 采用CDN加速静态内容 【TODO: 这里一个架构图】
  2. 管理团队敏锐的发现,很多访问请求来自手机,所以团队作出了一个重大的决定--Mobile First。之前用PHP做的页面之外,单独开发了手机APP,包括两个版本,分别是ios和安卓版。这个变化带来最大的技术变化是:很多原来页面上的功能,需要作为REST提供了。原来PHP生成的页面,现在根据开发需求做了前后端分离,前端访问后端采用REST方式。这次变化可以概括成:
    • 用户端分化出了页面(浏览器)访问以及移动端(手机APP)访问;管理端仍然是浏览器访问
    • APP访问后端,采用了REST API方式;REST访问不再是基于session的模式,而是基于Token
    • 为了提高访问速度,无论是桌面(浏览器)还是移动端(APP),都作了代码改动--数据库采用了读写分离的策略 【TODO:这里一个架构图,加app,加读写分离】
  3. 成功的技术改造和优秀的产品,带来的大量的客户。“好运来”决定构建自己的CRM,首先把最重要的客户的事情管理起来。并且随着公司营收的增长,团队也增长很快,仅仅是技术领域就有了很多人汇报给CTO。这带来了公司建设财务、HR系统。这个时期的三大标志是CRM、财务、HR系统的建立,整体IT的变化可以概括成:
    • 引入了CRM、财务、HR系统后,“网站”需要和这些系统结合来完成功能
    • 数量激增的员工带来了新的办公系统的改造和升级,邮件系统、考勤系统、VPN远程办公系统都成为了CTO的管理范围--CTO不仅要会写程序,还得会修电脑了 【TODO:这里一个架构图,加ESB】
  4. 卓有成效的改进带来了更进一步的业务增长,参考了同行的一些做法,“好运来”决定把“网站”做水平拆分:根据功能属性,把系统拆分成了若干个相对独立的“服务”;相应的,每个服务的后台采用了彼此隔离的数据库。这个时期的变化可以概括为:
    • 服务化。根据大的功能模块,每个模块成为独立的服务
    • 这些拆分出来的“服务”都是用Java开发的。虽然CTO依然推崇PHP,但是只有采用Java开发才能找到众多的开发人员
    • 伴随服务化的是“分库分表”,每个独立的服务使用彼此隔离的数据库
    • 当不同系统之间需要交换信息的时候,需要通过接口调用实现 -- 开发团队采用了流行的Dubbo作为服务之间互相访问的方式 【TODO:这里一个架构图,加水平拆分】
  5. 水平拆分是一个好的主意,至少越来越多的功能,都是通过添加新的“服务”实现的。不过越来越多的开发人员开始不那么喜欢Java了,他们开始采用nodejs和go来开发,而且看起来他们确实开发效率高一些。为了更好的支持这些各种各样的开发语言和开发框架,团队决定采用“容器技术”,而且团队相信用kubernetes管理容器可以带来更高的生产效率,虽然团队因此不得不接受DevOps,全栈,SRE,和大量枯燥易错的yaml的学习。概括起来,这个时期的变化主要是:
    • 新的编程语言的采用,比如nodejs和go
    • 容器技术的采用,包括容器打包(Docker)和容器管理平台(Kubernetes)
    • DevOps的采用 【TODO:这里一个架构图,加kubernetes】
  6. 容器技术的采用,满足了“好运来”日益变化的业务需求,也满足了日益增长的流量需求;虽然容器化仍然也有不少问题,但是CTO终于可以“喘口气”了。不过新的问题是公司采购硬件的速度成为了新的问题,而且公司扩张到新的区域时候,基础设施并不能快速跟进。“好运来”决定采用公有云。如果把之前已经做过在IDC为主体的IT环境称为“私有云”的话,那么这个时期的技术特征主要是:
    • 公有云的规模采用
    • 多云环境。采用了多种公有云技术
    • 混合云。存量和核心的业务以及数据,仍然是运行和存放在自己托管的IDC内;增量和外围业务使用了公有云
    • 公有云上新的技术的采用,对应用架构产生了影响。首先是对象存储和serverless
      【TODO:这里一个架构图,解释对象存储和serverless引入后架构的变化】

接下来让我们了解在如上各个阶段,Flomesh如何帮助“好运来”:如何在架构演进、流量高速增长的同时,有效的维护对应用流量的管理。