一、背景

在传统的IT企业,一般都可分为前台和后台两部分。

“前台”和“前端”并不是一回事。所谓前台即包括各种和用户直接交互的界面,比如web页面,手机app;也包括服务端各种实时响应用户请求的业务逻辑,比如商品查询、订单系统等等。

后台并不直接面向用户,而是面向运营人员的配置管理系统,比如商品管理、物流管理、结算管理。后台为前台提供了一些简单的配置。

在当时,项目的发展相对稳定,并不需要那么快速的去迭代和试错,所以这种结构并没有什么问题。在互联网快速发展的今天,企业之间的竞争越来越激烈。只有以用户为中心,快速影响用户的需求,不断迭代和试错,才能让企业在竞争当中立于不败。

但是,现实情况下,在传统的前台-后台架构中,各个项目相对独立,许多项目都在重复发明同样的轮子,即让项目本身越来越臃肿,也让开发效率越来越低。这种时候,为提高开发效率,我们有必要整合出一个中间组织,为所有的项目提供一些公共资源。而这个中间组织,就是人们所说的“中台”。技术中台,为了避免研发人员重复发明轮子,向各个项目提供通用的底层框架、引擎、中间件。

二、单体应用到微服务的转变过程

2.1 传统的开发模式

先来看看传统的 WEB 开发方式,通过对比比较容易理解什么是 微服务架构。和 微服务 相对应的,这种方式一般被称为 单体式开发(Monolithic)。

既所有的功能打包在一个 WAR 包里,基本没有外部依赖(除了容器),部署在一个 JavaEE 容器(Tomcat,JBoss,WebLogic)里,包含了 DO/DAO,Service,UI 等所有逻辑。

2.1.1 优点

  • 开发简单,集中式管理
  • 基本不会重复开发
  • 功能都在本地,没有分布式的管理和调用消耗

2.1.2 缺点

  • 效率低:开发都在同一个项目改代码,相互等待,冲突不断
  • 维护难:代码功功能耦合在一起,新人不知道何从下手
  • 不灵活:构建时间长,任何小修改都要重构整个项目,耗时
  • 稳定性差:一个微小的问题,都可能导致整个应用挂掉
  • 扩展性不够:无法满足高并发下的业务需求

2.2 微服务架构

2.2.1 目的

有效的拆分应用,实现敏捷开发和部署

2.2.2 开发和交付中的伸缩立方


X轴: 运行多个负载均衡器之后的运行实例 Y轴: 将应用进一步分解为微服务(分库) Z轴: 大数据量时,将服务分区(分表)

三、从微服务到Kubernetes

Kubernetes 是 Google 2014 年创建管理的,是 Google 10 多年大规模容器管理技术 Borg 的开源版本。

Kubernetes 是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。使用 Kubernetes 我们可以:

  • 快速部署应用
  • 快速扩展应用
  • 无缝对接新的应用功能
  • 节省资源,优化硬件资源的使用

Kubernetes 的目标是促进完善组件和工具的生态系统,以减轻应用程序在公有云或私有云中运行的负担。

特点

  • 可移植: 支持公有云,私有云,混合云,多重云(多个公共云)
  • 可扩展: 模块化,插件化,可挂载,可组合
  • 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

从传统到容器化部署

传统的部署方式

传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。

容器化部署的优势

  • 快速创建/部署应用: 与虚拟机相比,容器镜像的创建更加容易。
  • 持续开发、集成和部署: 提供可靠且频繁的容器镜像构建/部署,并使用快速和简单的回滚(由于镜像不可变性)。
  • 开发和运行相分离: 在 build 或者 release 阶段创建容器镜像,使得应用和基础设施解耦。
  • 开发,测试和生产环境一致性: 在本地或外网(生产环境)运行的一致性。
  • 云平台或其他操作系统: 可以在 Ubuntu、RHEL、CoreOS、on-prem、Google Container Engine 或其它任何环境中运行。
  • 分布式,弹性,微服务化: 应用程序分为更小的、独立的部件,可以动态部署和管理。
  • 资源隔离
  • 资源利用更高效

为什么需要 Kubernetes

可以在物理或虚拟机的 Kubernetes 集群上运行容器化应用,Kubernetes 能提供一个以 “容器为中心的基础架构”,满足在生产环境中运行应用的一些常见需求,如:

  • 多个进程协同工作
  • 存储系统挂载
  • 应用健康检查
  • 应用实例的复制
  • 自动伸缩/扩展
  • 注册与发现
  • 负载均衡
  • 滚动更新
  • 资源监控
  • 日志访问
  • 调试应用程序
  • 提供认证和授权

摘自 千锋教育

四、凌云中台

从前面篇幅可以了解到从开发到部署一系列过程非常繁琐,为了简化过程,让开发人员更聚集于业务实现,凌云中台依托于原生云方案,打造 “云开发、云部署、云运营” 理念应运而生。

凌云中台提供了大部分基础服务:

  • 技术中台服务:认证中心、配置中心(角色、参数)、调度中心、消息中心、全文检索、存储中心等
  • 业务中台服务:运营后台、园企控制台、园企工作台、开放平台、应用市场等
  • 第三方服务:服务注册与发现(Nacos)、ELK等

pai 是一款针对开发团队设计的简单好用的开发辅助工具, 贯穿了整个套件的生命周期:创建工程 -> 代码生成 -> 单元测试 -> 工程运行 -> 代码托管 -> 环境部署 等等。

开发等相关人员只需要通过 pai 就可以生成项目基础微服务骨架,开发实现业务逻辑,打包部署到Kubernetes的环境,减少了对相关环境的学习成本、操作成本,激活了管理账号密码泄漏等安全隐患。

文档更新时间: 2024-04-26 09:51   作者:管理员