统一认证服务

用户认证是指验证某个用户是否为系统中的合法主体,即判断用户能否访问该系统。认证实现技术方面目前主要包括OAuth 2.0标准、JSON Web Token(JWT)两种方式进行认证,使用Spring Security框架完成相关的认证和授权验证。

根据系统的安全等级,用户认证一般选择以下登录认证方式。

(1)账号密码:通过账号加密码的方式进行登录认证,是最常规的认证方式。密码经过不可逆算法加密后保存在数据库中,实现简单,但安全性不是很高,一旦用户的密码泄露,将带来重大的安全风险。

(2)数字证书:用户办理数字证书作为用户登录的身份标识,使用数字证书并录入个人识别密码(Personal Identification Number,PIN码)的方式登录;数字证书根据证书存储的介质不同分为软件文件证书和硬件UKey证书。UKey证书安全性较高,但成本也较高,仅适用于非常重要的应用场景中。(3)生物识别:用户采用指纹识别、人脸识别、指静脉识别、虹膜识别等方式登录;生物识别技术对用户使用较为友好,但在精准性上对技术实现难度挑战较大。

(4)短信认证:向用户注册登记的手机号发送短信验证码,通过输入短信验证码进行认证;现在的应用系统越来越多,用户需要记住不同系统的账号密码,这给用户带来很大的挑战。短信认证逐渐成为一种相对便捷安全的认证方式,绝大部分网站提供短信认证。

单点登录服务

单点登录(Single Sign On,SSO)服务是指在多个相互信任的应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统的服务。单点登录在大型网站里使用得非常频繁,例如电商网站的背后是成百上千的子系统,用户的一次操作或交易可能涉及几十个子系统的协作,如果每个子系统都需要用户认证,不仅用户工作量巨大,各子系统还会为这种重复认证授权的逻辑耗费大量的资源。要实现单点登录,说到底就是要解决如何产生和存储信任凭证,以及其他系统如何验证这个信任凭证的有效性。

系统一般采用session共享方案来实现单点登录。共享session可谓是实现单点登录最直接、最简单的方式。将用户认证信息保存于session中,即以session中存储的值为用户凭证,这在单个站点内使用是很正常,也是很容易实现的,而在用户验证、用户信息管理与业务应用分离的场景下会遇到单点登录的问题。在应用体系简单、子系统很少的情况下,可以考虑采用session共享的方法来处理这个问题。

全局序列号服务

全局唯一序列号生成是在设计一个分布式系统时常常会遇见的需求。在分布式系统架构下,尤其是数据库使用分库分表时,数据库自增主键已无法保证全局唯一。在具体的应用系统中,一般由开发框架提供统一的组件,实现生成全局序列号服务,可直接调用生成全局序列号。

全局序列号服务提供全局唯一的数字序列,常用于主键列、唯一索引列、唯一标识字段等值的生成。在某些场景下,业务上可能会利用序列号做排序,这种情况下就要求生成的全局唯一序列号是有序递增的。分布式环境下全局序列号服务的要求如下:1)全局唯一;2)支持高并发;3)能够体现一定属性;4)高可靠,容错单点故障;5)高性能。

连接池服务

数据库连接是一种关键、有限、昂贵的资源,对数据库连接的管理能显著影响整个应用系统的可伸缩性和健壮性,以及应用系统的性能指标。为了减少数据库连接频繁创建、释放所产生的资源开销,生产环境的应用系统中应采用数据库连接池技术。

数据库连接池负责分配、管理和释放数据库连接,它允许应用系统重复使用一个现有的数据库连接,而不是重新建立一个。释放空闲时间超过最大空闲时间的数据库连接,从而避免因为没有释放数据库连接而引起的数据库连接泄露,这些技术能明显提高对数据库操作的性能。

数据库连接池的基本思想就是为数据库连接建立一个“池”,预先在池中放入一定数量的连接,当需要建立数据库连接时,只需从“池”中取出一个,使用完毕之后再放回去。可通过设定连接池最大连接数来防止系统过多地与数据库连接。应用启动时创建一定数量的数据库连接,使用时分配给调用者,调用完毕后返回给连接池。注意,返回给连接池后,这些连接并不会关闭,而是准备分配给下一个调用者。

数据传输服务

各业务系统的数据形式多种多样,包括结构化数据、非结构化数据、半结构化数据,以及根据数据应用场景划分的在线数据、离线数据等。数据网络情况纷繁复杂,需要一款适应这种环境的数据同步工具,实现实时增量与离线全量的多源异构数据一站式接入集成的产品。

数据传输服务是一种支持关系型数据库及大数据等多种数据源之间数据交互的数据服务。数据传输服务提供了数据迁移、数据实时订阅及数据实时同步等多种数据传输能力。通过数据传输服务可实现不停服数据迁移、数据异地灾备、跨域数据同步、缓存更新等多种业务应用场景,帮助企业构建安全、可扩展、高可用的数据架构。

数据迁移旨在帮助企业用户方便、快速地实现各种数据源之间的数据迁移,实现数据迁移上云、内部跨实例数据迁移、数据库拆分扩容等业务场景。数据迁移功能能够支持同异构数据源之间的数据迁移,同时提供了库表列三级映射、数据过滤多种抽取(extract)、转换(transform)、加载(load)(即ETL)特性。数据迁移支持多种迁移步骤,包括结构迁移、全量数据迁移及增量数据迁移。

数据同步功能旨在帮助企业实现两个数据源之间的数据实时同步。数据同步功能可应用于异地多活、数据异地灾备、本地数据灾备、数据异地多活、跨境数据同步、查询与报表分流、云BI及实时数据仓库等多种业务场景。数据同步的同步对象的选择粒度可以为库、表、列,用户可以根据需要同步某几个表的数据。同时,同步过程支持库、表、列名映射,即用户可以进行两个不同库名的数据库之间的同步,或两个不同表名之间的数据同步。

数据订阅旨在帮助企业用户获取各种关系型数据的实时增量数据,企业可以根据自身业务需求自由消费增量数据,例如缓存更新策略、业务异步解耦、异构数据源数据实时同步及含复杂ETL特性的数据实时同步等多种业务场景。数据订阅采用旁路的方式,通过解析数据库的增量日志(如MySQL的binlog、Oracle的changelog)来获取增量数据,不会对业务和数据库的性能造成影响。业务完成更新数据库后直接返回,不需要关心缓存失效流程,整个更新路径短、延迟低。同时,应用无须实现复杂双写逻辑,只需启动异步线程监听增量数据,更新缓存数据。对于开源数据传输工具,目前比较主流的产品有Kettle和DataX。