您的位置:首页 > 职场人生

程序员面试金典: 9.10 扩展性与存储限制 10.1如何搭建服务

2017-01-10 17:41 295 查看
问题:假设你正在搭建某种服务,有多达1000个客户端软件会调用该服务,取得每天开盘后股价信息(开盘价,
收盘价,最高价与最低价)。假设你手里已经有这些数据,存储格式可以自行定义。你会如何设计这套
面向客户端的服务,向客户端软件提供信息?你讲负责该服务的研发、部署、持续监控和维护。描述你
想到的各种实现方案,以及为何推荐采用你的方案。该服务的实现技术可任选,此外,可以选用任何机制
向客户端分发消息。
分析:这可以看做是高并发的服务。整体目的就是:减轻服务器压力,防止服务器崩溃。
技术点1_集群:采用多个服务器假设有n个,先将请求传给主服务器,然后,主服务器根据请求的客户端ip,
采用r = ip % n,计算该ip对应请求应该分发给机器r处理;
技术点2_缓存:由于考虑到实时性和并发请求的快速性,可以事先将股价信息查询后存在缓存中,设置缓存
失效时间time(比如设置为10分钟)。
当对机器r发送了获取股价信息的请求,机器r事先查看缓存是否失效,如果没有失效,直接将缓存
的股价信息返回给客户端;如果缓存失效,则直接查询数据库来获取股价信息并返回给客户端
技术点3_高可用性:考虑到高可用性,可以在机器中将股价信息事先结构化存储并序列化保存在本地,
如果读取缓存失败,则可以直接读取保存在本地的序列化的股价信息。
答案:对存储于文本,SQL进行讨论,说明SQL有点支持新增功能,易于扩展,备份等;缺点:设计一层,维护数据
分发使用XML,简单,解析方便,增加结点可以继续解析,易扩展。
我考虑了高并发,此题要考虑可扩展,易用性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐