当前位置: 代码迷 >> CVS/SVN >> svn&httpsqs&cdn.(仅做记录)
  详细解决方案

svn&httpsqs&cdn.(仅做记录)

热度:2148   发布时间:2013-02-26 00:00:00.0
svn&httpsqs&cdn.....(仅作记录)


与svn分支相比,使用rsync同步本机代码到测试机上进行测试有什么好处和坏处?
答:使用rsync的一个大好处就是透明化本机和测试机两者的边缘,将上传的批处理写到build.xml中,在本机执行工程的编译处理的同时就把编译好的dist文件同步上服务器
第一减少了svn进行commit,merge等操作
第二减少了在服务器进行ant编译操作
基本上实现在本机修改完代码就可以进行测试,将测试服务器某种程度透明化,减少步骤,提高了效率
但这样就无法实现在每次修改都有history,只有当文件正在的提交到svn上才能有每次的修改记录


HTTPSQS 的性能如何?可以不用 HTTPSQS 而用前端的 log 来实现吗?
答:为什么采用HTTPSQS,很重要一点就是因为它的性能相当可观,HTTPSQS是一款基于HTTP GET/POST协议的轻量级简单消息队列,底层使用Tokyo Cabinet的B+Tree Key/Value做持久化,在上次给的测试数据中可以看在10并发数到入队和出队的吞吐率都达到20000 req/sec以上,用它来实现异步读取对效率的影响是很底的,当然这个需要更多的测试来证实
采用log的分析存在两个难点,第一就是生成的log怎么按时间去分块,第二就是如何是解析log,并且这个解析不影响系统的性能


通过访问记录来动态调整缓存时,调整策略是如何设计的?
答:由于交易数据查询系统的查询条件组合复杂且多变,所以很难实现我们预定的缓存,策略是这样的,我们记录每一个用户的每一次访问,将这些访问的数据记录(记录访问不能影响原来的性能),再做分析,将访问较多次的数据做缓存


服务器使用Apache+Resin 时,在Apache中对.do设置过期时间是否有效?能否通过这个过期时间代替在 controller中手动设置 ETAG 来达到304的效果?

答:经测试,由于Apache和resin做了负责均衡,所以在apache中对.do设置过期时间是无效的
但可以在controller中通过response设置etag,从而在浏览器的headers中也会得到etag的值,如
response.addHeader("ETag","e3af4060-5-472bedf076880");


CDN的大概原理是怎样的?
答:在"网宿科技"查到的资料:

内容分发网络(CDN)采用智能路由和流量管理技术,及时发现能够给访问者提供最快响应的加速节点,并将访问者的请求导向到该加速节点,由该加速节点提供内容服务。利用内容分发与复制机制,CDN客户不需要改动原来的网站结构,只需修改少量的 DNS配置,就可以加速网络的响应速度。

当用户访问了使用CDN服务的网站时,DNS域名服务器通过CNAME方式将最终域名请求重定向到CDN系统中的智能DNS负载均衡系统。智能DNS负载均衡系统通过一组预先定义好的策略(如内容类型、地理区域、网络负载状况等),将当时能够最快响应用户的节点地址提供给用户,使用户可以得到快速的服务。

同时,它还与分布在不同地点的所有CDN节点保持通信,搜集各节点的健康状态,确保不将用户的请求分配到任何一个已经不可用的节点上。而网宿CDN还具有在网络拥塞和失效情况下,能拥有自适应调整路由的能力。

使用了CDN服务后,用户的访问流程如下图所示:

cdn

1.用户向浏览器提供要访问网站的域名,域名解析的请求被发往网站的DNS域名解析服务器;
2.由于网站的DNS域名解析服务器对此域名的解析设置了CNAME,请求被指向CDN网络中的智能DNS负载均衡系统;
3.智能DNS负载均衡系统对域名进行智能解析,将响应速度最快的节点IP返回给用户;
4.浏览器在得到速度最快节点的IP地址以后,向CDN节点发出访问请求;
5.由于是第一次访问,CDN节点将回到源站取用户请求的数据并发给用户;
6.当有其他用户再次访问同样内容时,CDN将直接将数据返回给客户,完成请求/服务过程。

?
?