本次分享主要分为以下几个方面:
1. 共享服务
2. 共享服务的建设
3. 共享服务的运营
一, 共享服务
1.背景
首先介绍一些背景,企业原本的应用是企业内部的管理型应用,随着时代的发展,由于员工移动的需求、招聘、打通上下游、接触消费者等需求,企业应用逐渐走向外部协同与交互应用。
这样的转变也带来了许多挑战。
· 大用户并发:比如秒杀等应用。
· 业务的快速创新:互联网会带来快速的变更。支持业务创新,需要积累,而非从0做起。
· 跨平台:客户端可能会使用不同的浏览器、操作系统、手机。后台也有可能是跨平台的,比如Spring Cloud、HSF等。
· 割裂的多个单体应用:企业内部有很多割裂的应用,如何打通。
· 开放及API经济:为了打通上下游要进行API开放。开放API也是一种经济,是可以盈利的。
2. 工业界的解决之道:汽车平台化
汽车平台化是指在开发过程中利用相似的底盘和车身结构,承载不同车型的开发和生产制造,在此基础上生产出外形、功能不尽相同的产品。
下面这个案例展示的是,将汽车拆分成不同的部件并进行组合。通过共享的方式来解决用户不同的需求,从而提高生产效率,降低成本。
3. 企业应用的技术演变
上面提到的是一个实际的应用案例,下面从技术角度介绍一下其演变过程。下图总体比较容易理解。需要强调一点现在的技术演变一定是轻量的。同时一定是多种类型的,客户端、数据库、网络都是多种类型的。
4. 共享服务能带来什么
效率:共享,就不需要从头开始做,
性能:微服务架构允许横向扩展,提高性能。
成本:可以重用之前的服务,降低了成本。
稳定:重用的服务是已经被验证过的。
兼容:可以兼容不同的系统。
二, 共享服务的建设
1. 业务服务中心化
比如将商品、订单、会员分别独立成商品中心、订单中心、会员中心。将业务分离方便进行横向扩展。
2. 基础能力API化
将基础的能力API化,不仅可以供内部使用,还可以开放给第三方。
3. 基础能力组件化
将公共的能力组件化,以隔离不同的应用层。
4. 下图展示了一个系统的层级视图。
最底层是数据库访问层。领域层是业务的核心,由于是共享服务,则一定会存在API接口层。最外层是前端的用户界面层,下面连着网关,网关和一系列的聚合调用构成了应用服务层。基础设施层包括消息队列,事务管理等。
5. 应用服务层由以下部分组成。
下面详细介绍一下应用服务层。它主要包括三个内容。
· 网关/应用:
· 协议转换
· 路由与过滤
· 认证与授权
· 转换与映射输入输出
· 可实现跨多个服务中心的业务流程
· 聚合:
· 实现跨多个服务中心的业务流程
· API接口:
· 提供远程访问接口
· 处理基础设施相关事宜,如日志/发送消息等
· 应用服务级别的输入验证
6. 应用服务层的职责
· 通过应用服务层将客户端与领域解耦
· 通过应用服务层将基础设施与领域解耦
· 应用服务层是无状态的和过程性的
端口形式和部署方式如下图。从实践经验看,一般需要提供两种接口,一种是RESTful,另一种是API。如果只有API接口,用户只能通过网关来进行协议的转发,而通过RESTful接口就可以实现简单的操作,比如客户的增加删除。同时,系统会部署在不同的环境中,因此,必须要解决适配性的问题。
在建设过程中有以下几种方式。
上图左侧和右侧得方式可能会导致两种不同的架构风格。当然,也不存在哪种方式更优的说法,要根据实际情况进行选择。
三, 共享服务的运营
共享服务开发完成之后,关键还要用于实践,因此,运营也是很重要的一环。运营主要分为两个部分。第一个部分主要是前台,如下图。比如,API如何申请,jar包如何下载,开发的文档在哪里等。
第二个部分是后台。主要包括,API管理,服务配置,监控预警(运营分析,比如哪些接口调用的次数较多),组件管理(组件被谁使用了)等。
共享服务或中台不仅仅只是一套系统,运营也是必不可少的。
本文由云栖志愿小组马JY整理