跨国际链路的数据服务系统架构设计的一种实现思路
2012-07-30 16:15
981 查看
现在数据在互联网产品中发挥的作用越来越大,很多公司都开始收集数据、整理数据,之后再数据建模、分析数据;最终我们得到的是知识,是某种规律的发现。发现知识和规律之后,我们需要将这些知识和规律运用到产品的改进或者运营中去。有些知识可以渗透在整个产品的设计中,比如说,我们通过数据分析发现,对于某种类型的网站的用户,他们大多数喜欢暖色调,那么我们就可以在设计界面的时候,多去使用一些暖色调;但是有些知识却不能或者说不易集成到产品的设计中,比如一种针对于某个用户,而不是全体全体用户的策略:如果当前这个用户是类型1用户,我们就要做动作A,其实这也就是一种推荐系统。对于后者的实现,其实直观的思路上并不难,不外乎是分析用户数据,给用户打标签,存入数据库中,产品直接从数据库中取得用户的标签信息,继而判断用户类别,进而采取相应的个性化服务。但是对于某些跨国
部署的产品,我们面对的一些条件却限制了我们采取这样直观的设计方法,首先,我们来看一下我们的系统应该满足那些需求:
1. 高效性:数据服务系统API嵌入到产品之后,不能对产品产生阻塞,如果因为这一点造成产品卡得不行,影响用户体验,那就和我们的初衷背道而驰了;
2. 稳定性:如果我们的数据中心宕机,对产品造成破坏性影响,那这就是个非常重要的隐患;
3. 易用性:API的接口必须简洁,嵌入必须方便,这是出于控制扩展成本方面的考量;
出于以上几个点的考量,一种异步+缓存的机制是最能满足这样的需求的。大体的实现思路是这样的:
从整体架构上,分为三个角色:数据中心数据服务进程+IDC数据服务进程+数据服务API;下面点一下这三个角色的作用(指提及核心的数据交互协议):
数据中心数据服务进程:负责从用户标签库中提取相应用户的标签数据(可以使用KV数据库,比如HBase,Redis等),实现提取数据的异步RPC方法;
IDC数据服务进程:负责管理IDC端的缓存(存储RPC方法,提取RPC方法),向数据中心数据服务进程询问某用户对应的标签数据;
数据服务系统API:嵌入到产品中,负责通过RPC调用,从IDC数据服务进程中取得某用户相应的数据;
更具体的实现方法,可以见下图:

这个架构,结合了我们整个数据体系之中的Scribe日志收集系统,用来收集反馈数据,一方面是用来反馈命中率信息,另一方面反馈业务系统中相关的数据,最后做效果评估时使用。
这个系统在使用过程中,首先在用户登录的时候做一次到数据中心异步RPC调用,数据中心的服务会从HBase中获取到用户的相关数据,通过到IDC数据服务进程的异步RPC调用将数据更新到IDC端的一个memcache中,在这个数据过期之前,需要此用户数据的时候,只需要从缓存里取出即可。
如果大家有更好的建议和想法,欢迎给我留言,相互交流。
部署的产品,我们面对的一些条件却限制了我们采取这样直观的设计方法,首先,我们来看一下我们的系统应该满足那些需求:
1. 高效性:数据服务系统API嵌入到产品之后,不能对产品产生阻塞,如果因为这一点造成产品卡得不行,影响用户体验,那就和我们的初衷背道而驰了;
2. 稳定性:如果我们的数据中心宕机,对产品造成破坏性影响,那这就是个非常重要的隐患;
3. 易用性:API的接口必须简洁,嵌入必须方便,这是出于控制扩展成本方面的考量;
出于以上几个点的考量,一种异步+缓存的机制是最能满足这样的需求的。大体的实现思路是这样的:
从整体架构上,分为三个角色:数据中心数据服务进程+IDC数据服务进程+数据服务API;下面点一下这三个角色的作用(指提及核心的数据交互协议):
数据中心数据服务进程:负责从用户标签库中提取相应用户的标签数据(可以使用KV数据库,比如HBase,Redis等),实现提取数据的异步RPC方法;
IDC数据服务进程:负责管理IDC端的缓存(存储RPC方法,提取RPC方法),向数据中心数据服务进程询问某用户对应的标签数据;
数据服务系统API:嵌入到产品中,负责通过RPC调用,从IDC数据服务进程中取得某用户相应的数据;
更具体的实现方法,可以见下图:

这个架构,结合了我们整个数据体系之中的Scribe日志收集系统,用来收集反馈数据,一方面是用来反馈命中率信息,另一方面反馈业务系统中相关的数据,最后做效果评估时使用。
这个系统在使用过程中,首先在用户登录的时候做一次到数据中心异步RPC调用,数据中心的服务会从HBase中获取到用户的相关数据,通过到IDC数据服务进程的异步RPC调用将数据更新到IDC端的一个memcache中,在这个数据过期之前,需要此用户数据的时候,只需要从缓存里取出即可。
如果大家有更好的建议和想法,欢迎给我留言,相互交流。
相关文章推荐
- 设计一种100%可用性服务的架构--适用于任何系统(B/S,C/S)[中英文版本]
- 实现基于组织机构的数据集权限系统的设计思路讲解【提供完整数据库设计下载】
- CQRS架构中同步服务的一种实现方式
- 简洁常用权限系统的设计与实现(七):一种错误的不可行的构造树的方法
- Web服务搜索与执行引擎(四)——基于(三)的系统架构设计
- 负载均衡--大型在线系统实现的关键(下篇)(服务器集群架构的设计与选择)
- 认证鉴权与API权限控制在微服务架构中的设计与实现(一)
- 实现基于组织机构的数据集权限系统的设计思路讲解
- 日处理20亿数据_实时用户行为服务系统架构实践
- 微服务架构分布式事务解决方案设计思路-(概念篇)
- 一种精妙的系统架构设计思想
- 58同城推荐系统架构设计与实现
- 数据插入一种基于CAS的无锁并发HashTable设计及C代码实现
- .NET 日志系统设计思路及实现代码
- 【2. 跳板机服务】云跳板机服务系统设计及实现
- 基于BBB的4轮移动轮式机器人系统设计与实现(八)-- SIM908 GPS 数据获取
- 一种系统异常设计思路
- 应用基础架构虚拟化实现公安系统服务优化
- SOA快速指南之服务实现及架构设计
- 认证鉴权与API权限控制在微服务架构中的设计与实现(三)