4、机房容灾
TFS集群通过多副本机制来保证数据的可靠性,同时支持多机房容灾,具体做法是在多个机房各部署一个TFS物理集群,多个物理集群的数据通过集群间的同步机制来保证数据互为镜像,构成一个大的逻辑集群。
典型的逻辑集群部署方式为一主多备,如上图所示,主集群同时提供读写服务,备集群只提供读服务,主集群上存储的所有文件都会由对应的dataserver记录同步日志,日志包含文件的block id和fileid以及文件操作类型(写、删除等),并由dataserver的后台线程重放日志,将日志里的文件操作应用到备集群上,保证主备集群上存储的文件数据保持一致的状态。
对于异地机房的容灾,如果多个机房的应用都对所在机房的TFS集群有写操作,则需要采用多个主集群的部署方式,即逻辑集群里每个物理集群是对等的,同时对外提供读写服务,并将写操作同步到其他的物理集群。为了避免多个主集群同时写一个block造成的写冲突,每个主集群按照指定的规则分配block id用于写操作,以两个主集群为例,1号主集群在写文件时只分配奇数号的block id,而2号主集群在写文件时只分配偶数号的block id;针对奇数号block的写操作由1号集群向2号集群同步,而针对偶数号block的写操作由2号集群向1号集群同步。
对于支持多机房容灾的集群,TFS客户端提供了failover的支持,客户端读取文件时,会选择离自己最近的物理集群进行读取,如果读取不到文件(该物理集群可能是备集群,该文件还没有从主集群同步过来),客户端会尝试从其他的物理集群读取文件。
5、运维管理
TFS在淘宝内部部署有多个集群、上千台服务器,有数百个应用访问,TFS将所有的资源信息存储在mysql数据库里,通过资源管理服务器(rcserver)进行统一的管理。
独立的多个集群在配置上通常是不同的,比如有的集群要求block存储2个副本,而有的集群则要求更高的可靠性,每个block存储3个副本,为了避免配置文件错误,每个集群的在mysql数据库里都有一套配置模板,在机器上线时,直接根据模板来生成配置文件。
每个集群的部署信息会在集群上线时由运维管理人员添加到mysql数据库里,比如一个逻辑集群里有哪些物理集群,每个物理集群的访问权限等,当内部应用需要使用TFS时,TFS会给每个应用分配一个appkey,同时根据应用的需求为其分配集群存储资源。 当TFS客户端启动时,会根据appkey从rcserver上获取应用的所有配置信息,根据配置信息来访问TFS的服务;client与rcserver间会周期性的keepalive, client将应用读写文件的统计信息汇报给rcserver,rcserver将针对该应用的最新配置信息带回给client。比如当某个集群出现重大问题时,可以修改mysql的配置,将应用切换到正常的集群上访问。
为了尽早发现问题,运维人员会在所有的TFS机器上部署监控程序,监视服务器的服务状态、监控集群的容量使用情况等,当发现有磁盘或机器故障时,自动将其下线;当发现集群的容量使用超过警戒线时,主动进行扩容。
2.4 互联网安全架构
随着国内计算机和网络技术的迅猛发展和广泛普及,企业经营活动的各种业务系统都立足于Internet/Intranet环境中。但是,Internet所具有的开放性、国际性和自由性在增加应用自由度的同时,对安全提出了更高的要求。一旦网络系统安全受到严重威胁,甚至处于瘫痪状态,将会给企业、社会、乃至整个国家带来巨大的经济损失。
在当前互联网的大背景下,网络安全架构显的尤其重要,只有通过增加安全技术措施才能提升系统的安全等级达到防患于未然。安全永远是相对的,没有最安全的架构,只有更安全的架构,本节主要阐述了常见的攻击手段、常用的安全算法、通信认证方式、HTTPS协议。
2.4.1 常见的攻击手段
1、SQL 注入
SQL注入是依赖于开发人员没测试输入数据的疏漏的攻击。大多数人拥有字母数字式密码,或者有安全意识的人,拥有附带其他键盘符号的字母数字式密码。由于这种想法,开发人员可能允许输入任何字符作为密码。这通常是没问题的,除非他们忘记清洁或检查输入数据。这种情况比应该的要发生的频繁得多。这种脆弱点被证实是对Web应用程序最有效的攻击类型之一,并且随着对Web应用程序的信任的增加,这种利用的力量甚至将更令人畏缩。
2、跨站脚本攻击(XSS)
跨站脚本攻击(XSS,Cross-site scripting)是最常见和基本的攻击WEB网站的方法。攻击者在网页上发布包含攻击性代码的数据。当浏览者看到此网页时,特定的脚本就会以浏览者用户的身份和权限来执行。通过XSS可以比较容易地修改用户数据、窃取用户信息,以及造成其它类型的攻击,例如CSRF攻击。出错的页面的漏洞也可能造成XSS攻击,比如页面/gift/giftList.html?page=2找不到,出错页面直接把该url原样输出,如果攻击者在url后面加上攻击代码发给受害者,就有可能出现XSS攻击。
3、跨站请求伪造攻击(CSRF)
跨站请求伪造(CSRF,Cross-site request forgery)是另一种常见的攻击。攻击者通过各种方法伪造一个请求,模仿用户提交表单的行为,从而达到修改用户的数据,或者执行特定任务的目的。为了假冒用户的身份,CSRF攻击常常和XSS攻击配合起来做,但也可以通过其它手段,例如诱使用户点击一个包含攻击的链接。
4、上传文件攻击
(1)文件名攻击,上传的文件采用上传之前的文件名,可能造成客户端和服务端字符码不兼容,导致文件名乱码问题文件名包含脚本从而造成攻击。
(2)文件后缀攻击,上传的文件的后缀可能是exe可执行程序,js脚本等文件,这些程序可能被执行于受害者的客户端,甚至可能执行于服务器上。因此我们必须过滤文件名后缀,排除那些不被许可的文件名后缀。
(3)文件内容攻击.IE6有一个很严重的问题,它不信任服务器所发送的content type,而是自动根据文件内容来识别文件的类型,并根据所识别的类型来显示或执行文件。如果上传一个gif文件,在文件末尾放一段js攻击脚本,就有可能被执行。这种攻击,它的文件名和content type看起来都是合法的gif图片,然而其内容却包含脚本,这样的攻击无法用文件名过滤来排除,而是必须扫描其文件内容才能识别。
5、分布式拒绝服务攻击(DDos)
DoS的攻击方式有很多种,最基本的DoS攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应。
DDoS攻击手段是在传统的DoS攻击基础之上产生的一类攻击方式。单一的DoS攻击一般是采用一对一方式的,当攻击目标CPU速度低、内存小或者网络带宽小等等各项性能指标不高它的效果是明显的。随着计算机与网络技术的发展,计算机的处理能力迅速增长,内存大大增加,同时也出现了千兆级别的网络,这使得DoS攻击的困难程度加大了目标对恶意攻击包的“消化能力”加强了不少,例如你的攻击软件每秒钟可以发送3,000个攻击包,但我的主机与网络带宽每秒钟可以处理10,000个攻击包,这样一来攻击就不会产生什么效果。
这时侯分布式的拒绝服务攻击手段(DDoS)就应运而生了。DoS攻击的原理很简单,如果说计算机与网络的处理能力加大了10倍,用一台攻击机来攻击不再能起作用的话,攻击者使用10台攻击机同时攻击呢?用100台呢?DDoS就是利用更多的傀儡机来发起进攻,以比从前更大的规模来进攻受害者。
高速网络给大家带来了方便的同时,也为DDoS攻击创造了极为有利的条件。在低速网络时代时,黑客占领攻击用的傀儡机时,总是会优先考虑离目标网络距离近的机器,因为经过路由器的跳数少效果好。而现在电信骨干节点之间的连接都是以G为级别的,这使得攻击可以从更远的地方或者其他城市发起,攻击者的傀儡机位置可以在分布在更大的范围,选择起来更灵活了。
2.4.2 常用的安全算法
论JAVA分布式服务架构(七)由免费论文网(www.jaoyuw.com)会员上传。