??xml version="1.0" encoding="utf-8" standalone="yes"?>色综合久久天天综合网,日韩08精品,亚洲狠狠爱一区二区三区 http://www.aygfsteel.com/zhanglongsr/category/41346.html路O漫其修远兮,向ְ上下而求索! zh-cn Fri, 24 Jun 2011 21:54:22 GMT Fri, 24 Jun 2011 21:54:22 GMT 60 《SaaS架构设计》读书笔记——可伸羃的应用架?/title> http://www.aygfsteel.com/zhanglongsr/articles/352884.htmlzhangxl zhangxl Thu, 23 Jun 2011 08:18:00 GMT http://www.aygfsteel.com/zhanglongsr/articles/352884.html http://www.aygfsteel.com/zhanglongsr/comments/352884.html http://www.aygfsteel.com/zhanglongsr/articles/352884.html#Feedback 0 http://www.aygfsteel.com/zhanglongsr/comments/commentRss/352884.html http://www.aygfsteel.com/zhanglongsr/services/trackbacks/352884.html http://blog.moozi.net/archives/saas-architecture-scalable-application-architecture.html 对于SaaS应用的可伸羃Q最理想的情况:随着用户数的增大Q系l架构不用做调整Q而仅需要增?增强相应的硬件设备(应用服务器、数据库服务器)卛_。而通常的应用架构具?span style="color: #ff0000">可~性,一般指的是可以实现”Scale out”Q即水^扩展或者向外扩展。?#8221;Scale up”通常为垂直扩展或者向上扩展,也就是增强硬件设备,q种方式几乎是Q何应用架构普遍适用的,但是通常都会面高成本的问题?/span>
1、应用服务器层的水^扩展?/strong> 实现应用服务器层的负载均衡,是实现应用服务器水^扩展的最主要手段Q具体实现负载均衡的{略有以下两U: a.Zg负蝲均衡讑֤实现负蝲均衡Q如F5讑֤?br /> b.Z软g的方式实现负载均衡,例如通过配置Apache Http Server?/p>
Apache可以实现负蝲均衡Q根据服务器的压力情况,每个用戯求分布到不同的应用服务器上。但大部分应用的用户h是有状态的Q一般用Session记录用户状态)。这U情况下Q如何能够在多台应用服务器之间保持用L态,是实现应用服务器层水^扩展的关键?br /> a.Session复制?/strong>Session复制的技术实现非常复杂,在大规模集群中实用性ƈ不强Q服务器之间大量的Session复制会严重媄响这些服务器的性能。而随着服务器数量的增加Q这U性能影响会显得更加突出,甚至不可接受。在大部分互联网应用中,Session复制技术应该是很少采用的?br /> b.Session Sticky?/strong>Z避免Session复制所带来的性能影响Q更单、也是更高效的一U做法是Session Sticky。这U方式将同一用户的请求{发到特定的JBoss服务器上Q避免了集群中Session的复制。Session Sticky的实现非常简单,但是q种方式不能满fail-over的需求。即当一台应用服务器down的时候,q台服务器上正在讉K的所有用LSession都失效了Q所有用户不得不再次重新d。而且q种方式q容易导致负载不够均衡?br /> c.ZCache的集中式Session?/strong>q种Ҏ通常使用集中式的Cache来代替本地Session。集中式的Session服务器采用的是MemCachedQ其本n也具备水qx展能力。当Session数量大到一台Cache服务器都不能承受的程度时Q我们也仅需要增加相应的Cache服务器即可?/p>
三种水^扩展方式的比较:
实现方式
优势
劣势
Session复制
服务器负载可以得到较好的均衡Q也可以保fail-over的支?/td>
Session复制会对服务器网l环境带来巨大的压力Q尤其在应用服务器数量较大的时候,基本不适用于大型互联网Q而且需要相应的应用服务器支?/td>
Session Sticky
实现比较单,在Load Balance层做相应的配|即可,不会带来Session复制引v的网l环境压?/td>
不能实现完全的负载均衡,部分情况下负载会极端pQ无法实现fail-over
ZCache的集中式Session
应用服务器层无状态,可以实现完全的负载均衡,不会带来Session复制引v的网l环境压?/td>
实现相对复杂一些,Cache本n可靠性不能绝对保证,可能会造成部分Session的丢?/td>
2、数据库层的水^扩展?/strong> 相对于应用服务器层的水^扩展Q数据库层的水^扩展更难实现。实现数据库的水qx展也有多U方式: a.数据库的垂直切分 Q将不同的功能模块所涉及的表划分C同的物理数据库中Q从而将对这些表的访问压力分担到多个不同的物理数据库中?br /> b.数据库的?写分?/strong>Q同一个数据库在多个物理服务器上具有多份CopyQ彼此同步。然后将对于数据库的写操作都l一C个主服务器上Q而读操作则分摊到多台从服务器上。通过?写分,实现数据库访问压力的分担?br /> c.数据库的水^切分 Q将原来存储在一个数据表中的数据Q按照一定的规则Q切分到多个不同的物理数据库中。每个数据库的数据结构完全相同,但是数据各不相同。最l对于业务数据的讉KQ会Ҏ其数据所在的数据库,定位到某一个数据库中查询?/p>
2.1、数据库的垂直切分?/strong> 管数据库的垂直切分是最Ҏ惛_的,但对于大部分应用而言Q除非模块间的关联很,否则要实现垂直切分也不容易: a.原本可能存在的表q接Q需要想办法去除?br /> b.原本同一个数据库的事务操作,可能会变成跨库事务。可见数据库的垂直切分是一个可以适当采用Q但很难q泛采用的数据库层扩展技术?/p>
2.2、数据库的读/写分L术?/strong>对于d写少的互联网应用Q会q泛采用?写分L术。尽Slave Database Server数量是可以线性扩展的Q但是基于以下两个原因,Slave Database Server也不是越多越好?br /> a.如果应用?写比例不是很悬殊Q单U增加Slave Database Server对于应用性能提升q且没有特别的作用,通常情况下,Slave Server的数量与?写比例对应?br /> b.Slave Database Serverq多可能造成Master-Slave之间的同步性能降低?/p>
2.3、数据库的水q_分?/strong>无论数据库的垂直切分q是?写分,对于实现数据库层的水qx展,适用范围都比较狭H。数据库的水q_分,通常有两U处理方式: a.一U是采用Hash法。采用Hash法实现更ؓ单,性能也高Q但是扩展性略差。因为Hash法一开始就定Q如果后面变更的话,会涉及数据的q移?br /> b.另一U是对应到哪个物理数据库也作ؓ关系表存储在集中式的U户数据库中。这U方式更为常见。在用户dӞ通过查询相应的关p表Q即可以定其对应租房的业务数据存储在具体的哪个物理数据库中?/p>
三种数据库层的水qx展方案对比:
实现方式
优点
不
垂直切分
实现?/td>
扩展能力有限Q强兌的应用不Ҏ垂直切分
?写分?/td>
可有效分担读的压力,主要在数据库层扩展,应用修改较小
对于ȝ比例不高的应用,扩展能力有限。依赖于数据库本w的同步能力
水^切分
SaaS应用中普遍适用Q扩展性强Q基本无限扩?/td>
实现比较复杂Q应用一般需要做较大攚w。需要预先做好负载规划,后期数据q移比较困难
]]>
数据库切分的介与内容 http://www.aygfsteel.com/zhanglongsr/articles/352882.htmlzhangxl zhangxl Thu, 23 Jun 2011 08:14:00 GMT http://www.aygfsteel.com/zhanglongsr/articles/352882.html http://www.aygfsteel.com/zhanglongsr/comments/352882.html http://www.aygfsteel.com/zhanglongsr/articles/352882.html#Feedback 0 http://www.aygfsteel.com/zhanglongsr/comments/commentRss/352882.html http://www.aygfsteel.com/zhanglongsr/services/trackbacks/352882.html 摘自Q?a >http://www.open-china.net/blog/10953.html 1. 什么是数据切分
存攑֜同一个数据库中ؓ同一个应用程序服务的数据分散存放到多个数据库上面Q以辑ֈ分散单台讑֤负蝲的效果,q提高可用性?
2. 垂直切分
按照pȝ的模块和功能切分。需要尽早作出切?
优点Q?
~点Q?
模块间的数据表会有关联? 数据量大的表仍有性能问题? 表关联无法在数据库别完成,要在E序中完成? 事务处理复杂?不能q度切分Q粒度适宜Q?
3. 水^切分
对大数据量的表按照某U规则进行散列拆分。根据社区模块、用L型、特定字D늱别等?
优点Q?
表关联基本能够在数据库端全部完成? 不会存在数据q量问题 应用E序端整体改动小 事务处理? 扩展性限制小
~点Q?
切分规则复杂Q很难有一个全面的切分规则 后期数据的维护难度复杂,手工定位数据? 应用pȝ各模块耦合度高Q可能会对后面数据拆分造成困难
4. 联合切分
通常先垂直切分,再对大表q行水^切分?
交替q行切分?
优点Q?
~点Q?
两种解决ҎQ?
a Q每个应用程序模块中配置理自己需要的一个或多个数据库,直接讉K各个数据库,在模块内整合数据?
b) 通过中间代理层来l一理数据源,后端数据库集对前端应用E序透明
实现cdQ?
a) 自行开发代理层
b) 使用数据?Proxy
?MySQL ?Proxy 。实现连接\由?Query 分析?Query qo和修改,负蝲均衡Q以及基本的 HA 机制?
c) 其他开源中间g
6. 可能的问?
a. 分布式事务问题?
——使用事务,提高应用E序的健壮性?
b. 跨节?Join 问题
——使用数据?Federated Q?DB Link {)
——使用应用E序来处理(使用~存{)
c. 跨节点合q排序分问?
——使用数据?Federated
——应用E序
?b ?c 同时出现Ӟ比较隑֤理?
]]>SQL SERVER 2000 常见的链接错?/title> http://www.aygfsteel.com/zhanglongsr/articles/291750.htmlzhangxl zhangxl Wed, 19 Aug 2009 02:33:00 GMT http://www.aygfsteel.com/zhanglongsr/articles/291750.html http://www.aygfsteel.com/zhanglongsr/comments/291750.html http://www.aygfsteel.com/zhanglongsr/articles/291750.html#Feedback 0 http://www.aygfsteel.com/zhanglongsr/comments/commentRss/291750.html http://www.aygfsteel.com/zhanglongsr/services/trackbacks/291750.html 在日常开发中Q用SQL SERVER 2000Q有时会出现SQL SERVER 无法q接的情况,本文Ҏ法连接的情况的排除做了汇怅R?br />
一."SQL Server 不存在或讉K被拒l?
q个是最复杂?错误发生的原因比较多,需要检查的斚w也比较多.
一般说?有以下几U可能?
1,SQL Server名称或IP地址拼写有误
2,服务器端|络配置有误
3,客户端网l配|有?br />
要解册个问?我们一般要遵@以下的步骤来一步步扑ևD错误的原?
首先,查网l物理连?/strong>
ping < 服务器IP 地址/服务器名U?/span>>
如果 ping < 服务器IP 地址 > 不成?说明物理q接有问?q时候要查硬件设?如网?HUB,路由器等.
q有一U可能是׃客户端和服务器之间安装有防火墙Y仉成?比如 ISA Server.防火墙Y件可能会屏蔽?nbsp;ping,telnet {的响应
因此在检查连接问题的时?我们要先把防火墙软g暂时关闭,或者打开所有被闭的端?
如果ping < 服务器IP 地址 > 成功?ping < 服务器名U?/span>> p|
则说明名字解析有问题,q时候要?nbsp;DNS 服务是否正常.
有时候客L和服务器不在同一个局域网里面,q时候很可能无法直接使用服务器名U来标识该服务器,q时候我们可以用HOSTS文g来进行名字解?
具体的方法是:
1.使用C本打开HOSTS文gQ一般情况下位于C:\WINNT\system32\drivers\etcQ?
d一条IP地址与服务器名称的对应记??
172.168.10.24 myserver
2.或在 SQL Server 的客L|络实用工具里面q行配置,后面会有详细说明.
其次,使用 telnet 命o查SQL Server服务器工作状?/strong>
telnet < 服务器IP 地址 > 1433
如果命o执行成功,可以看到屏幕一闪之后光标在左上角不停闪?q说?nbsp;SQL Server 服务器工作正?q且正在监听1433端口?nbsp;TCP/IP q接
如果命oq回"无法打开q接"的错误信?则说明服务器端没有启?nbsp;SQL Server 服务,
也可能服务器端没启用 TCP/IP 协议,或者服务器端没有在 SQL Server 默认的端?433上监?
接着查服务器侦听端口
netstat -an
看看1433端口是否打开侦听Q如果没有要到服务器上检查服务器端的|络配置,查是否启用了命名道.是否启用?nbsp;TCP/IP 协议{等 ?br />
可以利用 SQL Server 自带的服务器|络使用工具来进行检?
点击:E序 -- Microsoft SQL Server -- 服务器网l用工?br />
打开该工具后,?常规"中可以看到服务器启用了哪些协?
一般而言,我们启用命名道以及 TCP/IP 协议.
点中 TCP/IP 协议,选择"属?,我们可以来检?nbsp;SQK Server 服务默认端口的设|?br />
一般而言,我们使用 SQL Server 默认?433端口.如果选中"隐藏服务?,则意味着客户端无法通过枚D服务器来看到q台服务?起到了保护的作用,但不影响q接.
接下来我们要到客L查客L的网l配|?br />
我们同样可以利用 SQL Server 自带的客L|络使用工具来进行检?
所不同的是q次是在客户端来q行q个工具.
点击:E序 -- Microsoft SQL Server -- 客户端网l用工?br />
打开该工具后,?常规"中,可以看到客户端启用了哪些协议.
一般而言,我们同样需要启用命名管道以?nbsp;TCP/IP 协议.
点击 TCP/IP 协议,选择"属?,可以查客L默认q接端口的设|?该端口必M服务器一?
单击"别名"选项?q可以ؓ服务器配|别?服务器的别名是用来连接的名称,
q接参数中的服务器是真正的服务器名称,两者可以相同或不同.别名的设|与使用HOSTS文g有相g?
?"无法q接到服务器,用户xxx登陆p|"
该错误生的原因是由于SQL Server使用??nbsp;Windows"的n份验证方?
因此用户无法使用SQL Server的登录帐P?nbsp;sa Q进行连?解决Ҏ如下所C?
1.在服务器端用企业管理器,q且选择"使用 Windows w䆾验证"q接?nbsp;SQL Server
2.展开"SQL Serverl?,鼠标右键点击SQL Server服务器的名称,选择"属?,再选择"安全?选项?br />
3.?w䆾验证"?选择"SQL Server?nbsp;Windows ".
4.重新启动SQL Server服务.
在以上解x法中,如果在第 1 步中使用"使用 Windows w䆾验证"q接 SQL Server p|,
那就通过修改注册表来解决此问?
1.点击"开?-"q行",输入regedit,回Rq入注册表编辑器
2.依次展开注册表项,览C下注册表?
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer]
3.在屏q右Ҏ到名U?LoginMode",双击~辑双字节?br />
4.原g1改ؓ2,点击"定"
5.关闭注册表编辑器
6.重新启动SQL Server服务.
此时,用户可以成功C用sa在企业管理器中新建SQL Server注册,
但是仍然无法使用Windowsw䆾验证模式来连接SQL Server.
q是因ؓ?nbsp;SQL Server 中有两个~省的登录帐?
BUILTIN\Administrators
< 机器?/span>> \Administrator 被删?
要恢复这两个帐户,可以使用以下的方?
1.打开企业理?展开服务器组,然后展开服务?br />
2.展开"安全?,叛_"d",然后单击"新徏d"
3.?名称"框中,输入 BUILTIN\Administrators
4.?服务器角?选项卡中,选择"System Administrators"
5.点击"定"退?br />
6.使用同样Ҏd < 机器?/span>> \Administrator d.
说明:
以下注册表键:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\LoginMode
的值决定了SQL Server采取何Un份验证模?
1.表示使用"Windows w䆾验证"模式
2.表示使用混合模式QWindows w䆾验证?nbsp;SQL Server w䆾验证Q?
?提示q接时
如果遇到W三个错?一般而言表示客户端已l找Cq台服务?q且可以q行q接,
不过是由于连接的旉大于允许的时间而导致出?
q种情况一般会发生在当用户在Internet上运行企业管理器来注册另外一台同样在Internet上的服务?
q且是慢速连接时,有可能会D以上的超旉?有些情况?׃局域网的网l问?也会Dq样的错?
要解册L错误,可以修改客户端的q接时讄.
默认情况?通过企业理器注册另外一台SQL Server的超时设|是 4 U?
而查询分析器?nbsp;15 U(q也是ؓ什么在企业理器里发生错误的可能性比较大的原因).
具体步骤?
企业理器中的设|?
1.在企业管理器?选择菜单上的"工具",再选择"选项"
2.在弹出的"SQL Server企业理器属?H口?点击"高"选项?br />
3.?q接讄"下的"d时Q秒Q?双的框中输入一个比较大的数??nbsp;20.
查询分析器中的设|?
工具 -- 选项 -- q接 -- 登录超时设|ؓ一个较大的数字
?大部分机都用Tcp/ip才能成功Q有ơ我发现用Named Pipes才可以?
q是因ؓ在WINDOWS 2000以后的操作系l中QMS决SQL SERVER的安全问题将TCP/IP配置
为SQLSERVER的默认连接协议,你可以在CLIENT NETWORK UTILITY中看到TCP/IP和NAME PIPE
的顺序?br />
你也可以在:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib]
"ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00
看到默认的协议?br />
2.怎么在程序中更改Named Pipes Q?nbsp;Tcp/ip Q其sql语句怎么写?
你可以在上面提到的注册表的位|修改:
CLIENT端:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib]
"ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00
SERVER端:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib]
"ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00
]]>
վ֩ģ壺
|
|
|
|
ʷ |
Ϫ |
Т |
ij |
|
|
Ͷ |
|
괨 |
ɰ |
״ |
|
|
|
|
Ӽ |
ֹ |
ƽ |
|
ٲ |
|
Դ |
ɽ |
|
廪 |
|
|
|
Ӧ |
ν |
|
ƽ |
ƽ |
¡ |
|
|
ɽ |