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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值