书城|【案例】全国知名网上书城——基于企业中台构建智慧悦读体验( 二 )


3、 稳定性的压力:未来业务系统的需求越来越高 , 机器故障 , 系统故障 , 业务故障 , 数据故障等发生机率会增加 。
4、海量数据的压力:业务增长和用户增长带来数据的指数增长 , 在外来海量数据的处理和运营将会给系统带来巨大的压力 。
数据支持 1、整体项目在实施落地过程中 , Erda需要为其提供稳定健康的技术保障 , 其中对于基础资源需要托管运维的机器数量80余台 , 中间件多达十几个 。
2、需要面对200多个微服务在四个完整的环境(开发、测试、预发、生产)下保证可持续迭代部署 。
3、在特大的营销活动中 , 达到毫秒级响应速度 。
应用技术与实施过程 01
应用技术
1、 云资源弹性引擎
做到“以应用为中心” , 有两点至关重要:
? 1)开发者能够通过声明的方式 , 告诉平台应用运行的所有基础设施 , 从而完全对底层( 例如 Kubernetes) 不感知 。
? 2) 同样通过声明的方式 , 开发者告诉平台应用所需的所有通用能力 , 但不需要知道提供通用能力的搭建过程 。
为此 , 我们在架构上实现了一个抽象层 “云资源弹性引擎” 。
2、向下管理基础设施
? 1)多云调度能力
公有云可以获得更多弹性伸缩的能力 , 私有云可以用于存放企业数据 。 这种场景下企业可以结合经济效益或者安全因素进行取长补短 。
支持两个及以上公有云服务提供商 。 这类场景下一般是出于战略布局不希望被单一云服务厂商绑定 。 或者是因为地理位置的原因需要选择当地的其他的服务商 。 特别的 , 基于 Terraform 编排可以自动化实现云资源的快速购买和安装 。
部署到不同的集群隔离开发/测试/预发/生产环境隔离满足业务研发过程及安全生产的要求 。 同时也支持将业务与数据的环境分离到不同的集群中实现业务和数据业务分离 。
? 2)云原生能力
基于容器引擎 Kubernetes 实现资源统一池化管理 , 实现不同类型资源的统一调度和运维管理 。 应用开发者只需关注业务本身 , 通过代码声明的方式按需使用资源即可 , 而无需感知底层资源 , 也不需要了解容器和 Kubernetes Deployment、Statefulset、Service、 Ingress、Pod 等概念 。 容器具有轻量易部署的特点 , 可以适配业务需要完成服务能力的弹性伸缩 。
3、向上提供通用能力
? 1)抽象的工作负载 。
基于 Kubernetes 抽象出两类工作负载:“长时运行服务”(Service)和“短时运行任务”(Job) 。 进一步 , 通过 Orchestrator 编排有状态(Stateful)和无状态(Stateless)两种服务;通过 Pipeline 调度任务流(WorkFlow)、批计算(Batch)和流计算(Streaming) 。
? 2)基础的核心服务

推荐阅读