完整解决方案:支持推荐应用的PaaS平台4A能力组件
优采云 发布时间: 2022-10-03 04:46完整解决方案:支持推荐应用的PaaS平台4A能力组件
平台即服务(PaaS,platform as a service)作为云计算的一种应用形式,为应用开发者提供高效、安全的应用托管能力[]。随着PaaS云平台的不断发展,平台能力的丰富性和多样化已经成为PaaS平台的核心竞争点和关键指标[]。所谓平台的“能力组件”,主要是指PaaS平台提供的、可供平台上其他应用调用的软件能力。4A是Authentication(认证)。)、Authorization(认证)、Accounting(计费)和Audit(审计)的缩写,4A为用户提供统一的用户身份认证管理,应用访问(access)权限控制,记账和账户管理,以及基于操作的日志审计等功能。通过分析PaaS平台上的应用[-]可以发现,很多应用都需要基本的4A能力,比如用户信息管理、账户管理等。因此,4A能力组件正是在PaaS云平台中。可重用的重要组件之一,可有效减少应用程序开发量,增加软件资产的重用性。同时,丰富强大的平台能力也可以让平台上的应用拥有更丰富、更强大的功能,提高应用竞争力。. 4A能力组件在提供4A能力的同时,还为用户提供单点登录(SSO,single sign on)功能,方便用户在各种应用之间无缝切换,一站式满足用户和应用的需求。提供统一认证、认证管理、账号管理、审计管理、SSO等功能需求。
1 4A能力组件需求分析
4A能力组件为用户提供用户注册、密码找回、信息管理、计费管理等账户管理相关功能,提供统一的认证服务,为不同的应用提供认证管理,提供用户行为信息的审计管理,支持单点登录和其他功能。
4A能力组件的应用对象是PaaS云中的应用开发者、应用用户和管理员。4A能力组件为应用开发者提供了一个简单、安全、高效的接口,方便开发者使用。为保证一站式服务用户体验,4A能力组件为应用用户和管理员提供用户入口和管理员入口,完成对用户信息和应用信息的管理。
4A组件的功能主要包括账户管理、认证管理、认证管理、审计管理和SSO。
1) 账户管理:账户管理分为三个部分。一是基本账户管理,包括用户注册、找回密码、修改密码等;二是用户信息管理,包括基本用户信息(基本用户信息、用户分机信息和用户权限信息)和好友信息(好友信息、朋友关系和朋友组)。最后是账单信息,包括用户余额和交易详情。
2) 统一认证:统一认证用于判断用户是否合法。认证过程通过 OAuth2.0 协议实现。应用开发者在使用能力组件提供的开放接口之前,需要获取用户的授权凭证access_token。. access_token 是第三方访问用户资源的凭证。只有通过这个凭证,第三方应用程序才能访问 4A 能力组件中的数据。
3) 应用认证:只有经过系统授权的应用才能获取用户信息。当应用通过4A能力组件获取用户信息时,会对第三方应用进行授权检查,未经授权的应用不会获取任何用户信息。
4)系统审计:4A能力组件通过日志系统记录用户行为和系统操作信息,完成相关日志的采集、存储和分析。
5) SSO:SSO 是一种流行的系统集成解决方案。SSO可以保证在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
2 4A 能力组件设计2.1 系统架构
系统架构图如图所示。该系统分为三个部分。最上层是Web服务层,即接口服务器(API Server)和与开发者、用户和管理员交互的Web接口。Web服务层主要负责管理员门户,特别是4A能力组件将用户门户作为能力组件的第三方应用,不与管理员门户在同一层。. 这是因为管理员门户需要更高的权限,开放API不提供相关功能,调用开放API也会造成效率下降。中间是逻辑功能层,主要完成系统中所有逻辑功能的实现,包括账户管理、统一认证[]、应用认证、系统审计和SSO[]等。系统的底层是基础组件层,包括基础组件和支撑组件。基础组件是系统运行的必备组件,主要包括MySQL、NFS和邮件服务等。支持组件是支持系统运行的可选组件,主要包括日志系统等。下面将重点介绍日志系统和接口服务器。
图1
图1
图1 4A能力组件系统架构图
2.2 日志系统
日志系统是4A能力组件的支撑组件,负责在4A能力组件中记录用户的行为信息,并与4A能力组件中的审计模块相关联。其系统架构如下图所示。
图 2
图 2
图2 日志系统架构图
日志系统支持采集,海量日志数据的存储和分析。系统提供高性能的日志读写,包括实时读取最新日志和批量读取历史数据。日志系统由Kafka分布式消息队列、HBase分布式数据库、生产者程序和消费者程序[]组成。生产者程序是4A能力组件中的一个审计模块,可以为用户提供用户行为数据。消费者程序是一个基于HTTP协议的API服务器,日志系统通过API向4A能力组件提供各种日志信息。
2.3 API 服务器
4A能力组件提供的开放API由4A能力组件中Web服务层的API Server提供。
2.3.1 API 设计
根据4A能力组件的开发者需求,开放API定义为两类:
1)用户级API:OAuth2.0登录的用户,必须携带access_token参数。用户级 API 主要用于访问个人用户信息。
2)应用级API:用于不使用OAuth2.0登录并已授权的第三方应用。应用程序级 API 将具有参数 source 而不是参数 access_token。参数 source 是 4A 能力的一个组成部分 管理员分配给应用的唯一 ID。
根据系统功能,API分为以下7类:
1) 身份验证 API:/api/oauth2/" target="_blank">/api/oauth2/。
2) 用户关系 API:/api/friendships/" target="_blank">/api/friendships/。
3) 组 API:/api/friendships/groups/。" target="_blank">/api/friendships/groups/。
4) 用户信息 API:/api/users/" target="_blank">/api/users/。
5) 帐户 API:/api/account/" target="_blank">/api/account/。
6) 计费 API:/api/billing/" target="_blank">/api/billing/。
7) 日志 API:/api/log/" target="_blank">/api/log/。
2.3.2 API安全解决方案
为了保证用户信息的安全可靠,用户级API和应用级API采用不同的安全方案。
1) 用户级 API
用户级 API 使用 access_token 是否过期或有效来判断用户的真实性,并返回相应的数据。用户的access_token仅在用户登录期间有效,有效期为24小时。
对于OAuth2.0相关的API,还增加了以下安全措施:
① OAuth2.0 获取参数代码时,可以添加参数状态,维护请求和回调的状态。当4A能力组件重定向到应用程序时,将返回该参数。开发者可以通过该参数验证请求的有效性,从而防止跨站请求伪造攻击。
② OAuth2.0通过参数code获取参数access_token时,尽量选择HTTP协议的POST方式传输请求。
2) 应用程序级 API
应用级API只传递参数源作为应用身份的认证是不安全的,所以4A能力组件使用参数签名来保护用户信息。构造参数签名的过程如下:
①分类参数:API中携带的参数分为系统参数和非系统参数。系统参数包括应用ID(参数来源)和应用密钥(与参数来源唯一匹配)。非系统参数是除系统参数*敏*感*词*。
② 构造源字符串:将所有非系统参数和参数源按名称值升序排列,并用“&”连接,如k1=v1 & k2=v2 & ...,然后执行第一个MD5加密。
③ 构造密钥:在应用密钥末尾添加字符“&”。
④ 生成签名值签名:将源字符串和密钥以“k1=v1 & k2=v2 & ... & secret &”的形式拼接生成一个新的字符串,再用MD5加密该值。注意连接的顺序会影响最终的签名值。
4A能力组件的API Server获取API中的各种参数,按照上述算法进行相同的加密过程。如果得到的签名值与参数签名一致,则证明API是安全的。
3 基于4A能力组件的推荐应用3.1 4A能力组件与推荐应用的关系
传统的4A组件只提供4A功能,如用户信息、好友信息等,而4A数据的特性让这些数据可以在更广泛的应用中使用。基于4A能力组件的推荐应用是PaaS云平台4A能力组件的一个应用示例。本应用分析4A能力组件中采集的用户行为信息,为用户推荐PaaS云平台现有的第三方应用。用户可以通过个性化服务快速定位到自己的采集夹。应用程序来解决人们在访问互联网时面临的“信息过载”问题。
4A能力组件记录用户使用4A能力组件时的所有用户行为,并提供日志API。根据4A能力组件的特点,用户行为包括用户注册、用户登录、首次登录、登录时长等。此外,在4A能力组件的用户门户中,用户还可以填写个人兴趣信息以进行为个性化推荐提供直接的数据支持。
推荐的应用程序首先需要连接到 4A 能力组件。访问工作主要由 4A 能力组件的管理员执行,对应用进行审核,并为应用分配唯一的应用 ID 和应用密钥对。然后,被推荐的应用程序可以通过日志API采集4A组件提供的用户行为数据,并基于这些数据进行数据处理、用户兴趣建模和算法推荐。
3.2 推荐应用系统架构
用户访问应用程序,通常具有某些偏好。推荐应用根据用户注册的个人信息定制用户描述文件。该文件可以由用户主动修改或由应用程序自动修改。当文件被应用修改时,应用需要采集用户行为数据,学习用户兴趣,从而调整用户兴趣模型,完成推荐算法。推荐应用的系统架构如图所示。推荐过程分三个阶段完成:数据采集、用户建模和个性化推荐。
图 3
图 3
图3 推荐应用系统架构图
1) 数据采集阶段:该阶段根据4A能力组件提供的用户信息和用户行为信息,完成用户行为采集和数据处理。用户数据的采集方法包括显式反馈和隐式反馈。类型。明确的反馈需要用户主动给出反馈和评价。隐式反馈由应用程序自动完成,不会给用户增加额外的负担。应用程序使用显式反馈和隐式反馈共同实现数据采集的过程。显式反馈使用填写用户信息的方法,隐式反馈调用4A能力组件的日志接口获取用户行为数据。4A能力组件的审计模块详细记录用户访问站点的数据,站点上的页面每被访问一次,web服务器在日志中添加一条日志记录,包括用户IP、请求页面的用户名、应用程序名称、请求时间和 URL。此外,审计模块还将完成基本的数据处理。
2) 用户兴趣建模阶段:该阶段根据用户兴趣建立评价矩阵模型。user-item评估矩阵使用一个Rm×n矩阵来表示用户模型,其中m是用户数,n是项目数。矩阵 R=[rij] 中的每个元素 rij 代表用户 i 对项目 j 的评价结果,一般为一定实数范围内的整数值(如 1~10)。通常越高价值越高,用户对项目的兴趣程度越高。这种表示简单、直观,可以直接从显式反馈采集的信息中生成。
(1)
在本应用中,rij 是用户 i 在一段时间内对应用 j 的兴趣程度。兴趣度的值由用户i对应用j的访问次数、访问时长、SSO流程中第一次登录是否进入应用以及是否在此注册等方面加权应用。
3) 个性化推荐阶段:在这个阶段,根据用户相似度得到一组用户邻居。然后根据邻居用户,对目标用户没有评分的物品进行预测和评分,返回评分最高的N(Top-N)个物品。
4。结论
针对现有PaaS平台开放能力的局限性,以及现有应用功能列表4A体系不规范,提出了PaaS云中的4A能力组件。该组件分为账户管理、统一认证、应用授权。、系统审计和 SSO 5 模块,并通过开放的 API、用户门户和管理员门户为开发人员、用户和管理员提供丰富和安全的 Web 服务。根据4A数据的特点和4A能力组件提供的能力,创新设计并实现了基于4A能力组件的推荐应用。该应用使用用户兴趣模型和协同过滤算法来实现对PaaS云平台现有应用的推荐,同时也验证了4A能力组件的可用性及其应用范围的广泛性。.
设计并实现的4A能力组件已应用于北京邮电大学“云海”PaaS平台,并被平台上多个第三方应用使用,如:面向群体的在线知识管理应用及其管理员门户(、)等。第三方应用开发者通过使用4A能力组件,简化应用开发流程,节省应用开发时间。PaaS云中的4A能力组件增加了软件资产的复用,更好地规范了用户信息的管理流程,开创了用户信息管理服务的新模式。
经验:数据采集技术包括哪几方面(优缺点分别是什么)
很多人不知道data采集技术包括哪些,优缺点,一起来看看吧!
1、通过各软件厂商开放的数据接口,可以实现不同软件数据的互联互通。这是目前最常见的数据连接方式。
2、优点:接口连接方式数据可靠性和价值高,一般不会出现数据重复;通过该接口可以实时传输数据,满足实时数据应用的要求。
3、缺点:接口开发成本高;(2)需要与多个软件厂商协调,工作量大,容易破解;扩展性低。比如由于新业务需要开发每个软件系统对于一个新的业务模块,它和它之间的数据接口大数据平台也需要做相应的修改和改变,甚至之前的数据接口代码都要全部翻过来,工作量大,时间长。
4、机器人是目前比较前沿的软件数据对接技术,即可以采集客户端软件数据和网站软件数据。
5、俗称博是小帮手软件机器人,产品设计原则是“所见即所得”,即无需软件厂商合作,采集上的数据软件界面将被输出。结果是结构化的数据库或 Excel 表。
6、如果只需要界面上的业务数据,或者软件厂商不配合/崩溃,数据库分析困难,最好使用软件机器人采集数据,尤其是详情页的data采集功能比较有特色。
7、技术特点是:无需原软件厂商的配合;兼容性强,可以采集和汇总Windows平台上各种软件系统的数据;输出结构化数据;即用型,实现周期短,简单高效;配置简单,无需编程,人人都可以DIY一个软件机器人;价格远低于手动和界面。
8、缺点:采集软件数据的实时性有限。
9、网络爬虫是模拟客户端的网络请求并接收请求响应,并按照一定的规则自动从万维网上爬取信息的程序或脚本。
10、爬虫数据采集缺点:输出数据多为非结构化数据;只能采集网站数据,易受网站反爬机制影响;用户脸窄,需要专业的编程知识才能玩。
11、开放式数据库是采集和整合数据最直接的方式。
12、优点:开放数据库方式可以直接从目标数据库中获取需要的数据,准确率高,实时性有保证。这是最直接、最方便的方法。
13、缺点:开放数据库模式还需要协调各个软件厂商的数据库开放,这取决于对方的意愿。一般出于安全原因不会开放;如果一个平台同时连接多个软件厂商的数据库,并且实时获取数据,对平台的性能也是一个很大的挑战。