题主是否想询问“金蝶云星空报表老是取另外数据中心地址的原因是什么”金蝶云星空报表老是取另外数据中心地址原因有数据库连接配置错误、数据库负载均衡。
1、数据库连接配置错误:在连接数据库时,如果配置的地址不正确,就可能会取到另外数据中心的地址。可以检查连接配置信息,确保连接到正确的数据库。
2、数据库负载均衡:金蝶云星空可能会使用负载均衡技术来分配数据库请求,如果负载均衡策略不正确,就可能会取到另外数据中心的地址。可以联系金蝶云星空客服,了解负载均衡策略,并进行相应的配置。
一、目前网站架构一般分成负载均衡层、web层和数据库层,我其实一般还会多加一层,即文件服务器层,因为现在随着网站的PV越来越多,文件服务器的压力也越来越大;不过随着moosefs、DRDB+Heartbeat的日趋成熟,这问题也不大了。网站最前端的负载均衡层称之为Director,它起的是分摊请求的作用,最常见的就是轮询。
二、F5是通过硬件的方式来实现负载均衡,它较多应用于CDN系统,用于squid反向加速集群的负载均衡,是专业的硬件负载均衡设备,尤其适用于每秒新建连接数和并发连接数要求高的场景;LVS和Nginx是通过软件的方式来实现的,但稳定性也相当强悍,在处理高并发的情况也有相当不俗的表现。
三、Nginx对网络的依赖较小,理论上只要ping得通,网页访问正常,nginx就能连得通,nginx同时还能区分内外网,如果是同时拥有内外网的节点,就相当于单机拥有了备份线路;lvs就比较依赖于网络环境,目前来看服务器在同一网段内并且lvs使用direct方式分流,效果较能得到保证。
四、目前较成熟的负载均衡高可用技术有LVS+Keepalived、Nginx+Keepalived,以前Nginx没有成熟的双机备份方案,但通过shell脚本监控是可以实现的,有兴趣的可具体参考我在51cto上的项目实施方案;另外,如果考虑Nginx的负载均衡高可用,也可以通过DNS轮询的方式来实现,有兴趣的可以参考张宴的相关文章。
五、集群是指负载均衡后面的web集群或tomcat集群等,但现在的集群意义泛指了整个系统架构,它包括了负载均衡器以及后端的应用服务器集群等,现在许多人都喜欢把Linux集群指为LVS,但我觉得严格意义上应该区分开。
六、负载均衡高可用中的高可用指的是实现负载均衡器的HA,即一台负载均衡器坏掉后另一台可以在<1s秒内切换,最常用的软件就是Keepalived和Heatbeat,成熟的生产环境下的负载均衡器方案有Lvs+Keepalived、Nginx+Keepalived
七、LVS的优势非常多:①抗负载能力强;②工作稳定(因为有成熟的HA方案);③无流量;④基本上能支持所有的应用,基于以上的优点,LVS拥有不少的粉丝;但世事无绝对,LVS对网络的依赖性太大了,在网络环境相对复杂的应用场景中,我不得不放弃它而选用Nginx
八、Nginx对网络的依赖性小,而且它的正则强大而灵活,强悍的特点吸引了不少人,而且配置也是相当的方便和简约,小中型项目实施中我基本是考虑它的;当然,如果资金充足,F5是不二的选择。
九、大型网站架构中其实可以结合使用F5、LVS或Nginx,选择它们中的二种或三种全部选择;如果因为预算的原因不选择F5,那么网站最前端的指向应该是LVS,也就是DNS的指向应为lvs均衡器,lvs的优点令它非常适合做这个任务。重要的ip地址,最好交由lvs托管,比如数据库的ip、webservice服务器的ip等等,这些ip地址随着时间推移,使用面会越来越大,如果更换ip则故障会接踵而至。所以将这些重要ip交给lvs托管是最为稳妥的。
十、VIP地址是Keepalived虚拟的一个IP,它是一个对外的公开IP,也是DNS指向的IP;所以在设计网站架构时,你必须向你的IDC多申请一个对外IP。
十一、在实际项目实施过程中发现,Lvs和Nginx对>
这篇文章主要介绍如何使用jdbc配置连接数据库(oracle的RAC配置的数据库)达到负载均衡的情况 该例子是以 个NODE的情况说明 希望对大家有所帮助
我的问题是我需要设置oracle x的thin客户端连接到oracle的RAC环境上
注:这样连接可以通过RAC自动平衡负载
原文如下:
Hi Tom
I couldn t find this information easily on the net So I m submitting it hereand hope you make it available for anyone else looking for this information
My problem was I needed to configure the Oracle x thin driver (type IV) toconnect to an Oracle Real Application Cluster (RAC) environment
For example assuming you have a database called RAC_DB with o nodes node and node
You would need to configure your tnsnames ora with the following information inthe following way:
RAC_DB = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = node )(PORT = )) (ADDRESS = (PROTOCOL = TCP)(HOST = node )(PORT = )) (LOAD_BALANCE = yes) (FAILOVER = on) ) (CONNECT_DATA = (SERVICE_NAME = RAC_DB) (FAILOVER_MODE = (TYPE = SELECT) (METHOD = BASIC) (RETRIES = ) (DELAY = ) ) ) )
Now if you start a SQLPLUS session then you should see a connection on thenode instance If you start another SQLPLUS session then Oracle shouldconnect you to the node instance (automatic load balancing) It s actuallypretty cool to see the first time
To pass this same information to the Oracle s JDBC thin driver you essentiallyconcatenate a shorten version of the tnsnames information above and pass this tothe driver
String userid = scott ; String password = tiger ;
String tnsnames_info = (DESCRIPTION=(ADDRESS_LIST= + (ADDRESS=(PROTOCOL=TCP)(HOST=node )(PORT= )) + (ADDRESS=(PROTOCOL=TCP)(HOST=node )(PORT= )) + (LOAD_BALANCE=yes)(FAILOVER=on)) + (CONNECT_DATA=(SERVICE_NAME=rac_db))) ;
String url = jdbc:oracle:thin:@ + tnsnames_info;
DriverManager registerDriver(new oracle jdbc OracleDriver()); Connection dbConnection = DriverManager getConnection(url userid password);
That s it If your application creates multiple connection to the database then you should see these connections load balance across the o instances
One last note Oracle only supports connection to a RAC configuration with the i drivers so you should try to get the latest Oracle JDBC thin driver
HTH Peter
and we said
you made it really hard you just needed the service! the load balancing andall could be/should be setup on the listener side!
you have one listener both databases register with it as a service
that would be another option
Reviews
I think we tried that and it didn t work September Reviewer: Peter Tran from Houston TX USA
Hi Tom
I m pretty sure we tried that but it didn t work with the thin driver Thatapproach will work if you use the OCI driver but not with the thin driver
Please send me an example of what you mean or what files I should configure totest it out
I m always opened to easier options
Thanks Peter
Followup:you need to set up mts and a single listener thats it
pmon on each of the rac instances will tell the listener about the load and awayit goes you might not see the round robin right off (both are not yetloaded ) so it ll be an unbalanced load balance initially but as the systemramps it ll balance out
Unknown territory September Reviewer: Peter Tran from Houston TX USA
I m sorry but I really lost you with that last remendation Rather thanfrustrate you with my ignorance can you remend the Oracle documentation thatI should read to brush up on this information
I ll read this first and e back with questions if I m still lost
For example I don t understand why you want me to setup the database as MTS Why can t I use dedicated server mode
Thanks for the quick response
Peter
Followup:in order for a single listener to service many instances on differentmachines the listener must be servicing shared server connections thelistener cannot fork/exec a dedicated server since the listener may well notbe running on the machine the instance is on it needs to know dispatcheraddresses to redirect the client request to
lishixinzhi/Article/program/Oracle/201311/17131
负载均衡利用两种方式实现,其一是利用
Microsoft
Windows2000
Advance
Server
的集群技术实现的单集群36台服务器的负载均衡;其二是利用先进的Alteon180e
硬件设备实现的硬件负载均衡,提供可靠高效、与平台无关、基于TCP、UDP、IP等多种协议的应用负载均衡。同时,利用
Alteon180e
的技术特性实现基于端口和IP地址的网络流量划分,使有特殊流量需求的用户能够得到充足稳定的网络带宽资源。
避免单链路连接造成的单点故障
高质量专用硬件设备
专业的服务团队
多年的实施经验满足各类客户的需要
降低管理难度
减少投资成本,消除带宽瓶颈
处理大量数据并发 *** 作可以采用如下几种方法:
1使用缓存:使用程序直接保存到内存中。或者使用缓存框架: 用一个特定的类型值来保存,以区别空数据和未缓存的两种状态。
2数据库优化:表结构优化;SQL语句优化,语法优化和处理逻辑优化;分区;分表;索引优化;使用存储过程代替直接 *** 作。
3分离活跃数据:可以分为活跃用户和不活跃用户。
4批量读取和延迟修改: 高并发情况可以将多个查询请求合并到一个。高并发且频繁修改的可以暂存缓存中。
5读写分离: 数据库服务器配置多个,配置主从数据库。写用主数据库,读用从数据库。
6分布式数据库: 将不同的表存放到不同的数据库中,然后再放到不同的服务器中。
7NoSql和Hadoop: NoSql,not only SQL。没有关系型数据库那么多限制,比较灵活高效。Hadoop,将一个表中的数据分层多块,保存到多个节点(分布式)。每一块数据都有多个节点保存(集群)。集群可以并行处理相同的数据,还可以保证数据的完整性。
:
大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
在维克托·迈尔-舍恩伯格及肯尼斯·库克耶编写的《大数据时代》中大数据指不用随机分析法(抽样调查)这样捷径,而采用所有数据进行分析处理。大数据的5V特点(IBM提出):Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)。
参考资料:网页链接
数据库集群技术
1)提高数据库处理速度的技术
目前有四种提高数据库处理速度的办法:
◆ 提高磁盘速度:这包括RAID和其他磁盘文件分段的处理。主要的思想是提高磁盘的并发度(多个物理磁盘存放同一个文件)。尽管实现方法各不相同,但是它们最后的目的都是提供一个逻辑数据库的存储映象。我们要评价的六个系统都能有效地利用这些技术。由于ICX已经有最大的磁盘冗余度,RAID 磁盘系统的设置应该侧重于速度,而不是数据冗余。这样磁盘利用的效益就会提高。
◆ 分散数据的存放:主要思想是利用多个物理服务器来存放数据集的不同部分(一个数据库表格分散到多个服务器或者每个服务器分管几个内容不同的表格)。这些办法不但可以扩展数据集(数据集的可扩性),而且使得不同的服务器进行并行计算成为可能。例如,对于ORACLE的RAC来讲,由于它是共享磁盘的体系结构,你只需要简单地增加一个服务器节点,RAC就能自动地将这节点加入到它的集群服务中去。RAC会自动地将数据分配到这节点上,并且会将接下来的数据库访问自动分布到合适的物理服务器上,而不用修改应用程序。对于UDB来讲,因为它是非共享磁盘的体系结构,因此就必须手工修改数据的分区,MSCS和ASE也是同样的情况。MySQL也需要手工分区,并且是这几种数据库中支持分区的自动化程度最低的,也就是说,应用程序需要自己负责数据库的分布式访问。不管数据存放是如何实现的,分布式存放数据的缺点是对数据库的可用性有负面影响。任何一台服务器的损坏都会影响整个系统的可用性。但是,这是迄今为止各大数据库厂商能提供的业界最好的数据库集群技术了。ICX是一种基于中间件的数据库集群技术,它对客户端和数据库服务器都是透明的。因此,ICX可以用来集群几个数据库集群(一个逻辑数据库),也可以用于集群几个物理数据库服务器(来增强一个分管关键数据的物理服务器)。
◆ 对称多处理器系统:此技术的思想是利用多处理机硬件技术来提高数据库的处理速度。但是,除了ICX,所有其它的数据库集群技术只支持单一的可修改的逻辑数据库。绝大部分的数据库事务处理是磁盘密集型的,纯计算负荷很小的,对称多处器技术在数据库上的应用的实际收益是很有限的。这也说明了为什么实际应用中最多只用了四个CPU的原因。所有的基于数据库引擎的集群都支持这个技术,ICX对SMP技术是中性的,因为它能把多个数据库服务器集合在一起构成一个集群,也能将多个现存的数据库集群集合在一起,构成集群的集群。
◆ 交易处理负载均衡:此技术的思想是在保持数据集内容同步的前提下,将只读 *** 作分布到多个独立的服务器上运行。因为绝大多数的数据库 *** 作是浏览和查询,,如果我们能拥有多个内容同步的数据库服务器,交易负载均衡就具有最大的潜力(可以远远大于上面叙述的最多达四个处理器的对称多处理器系统)来提高数据库的处理速度,同时会具有非常高的数据可用性(真正达到5个9,即99999%)。所有基于数据库引擎的集群系统都只支持一个逻辑数据库映象和一个逻辑或物理的备份。这个备份的主要目的是预防数据灾难。因此,备份里的数据只能通过复制机制来更新,应用程序是不能直接更新它的。利用备份数据进行交易负载均衡只适用于一些非常有限的应用,例如报表统计、数据挖掘以及其它非关键业务的应用。只有ICX能够做到同步复制多个数据库服务器从而达到在保持数据一直性前提下的真正的负载平衡。
上述所有技术在实际部署系统的时候可以混合使用以达到最佳效果。
2)提高数据库可用性的技术
根据物理法则,提高冗余度是提高数据库可用性的唯一途径。
提高数据库冗余度大致有四种方法:
◆ 硬件级的冗余:主要思想是让多处理机同时执行同样的任务用以屏蔽瞬时和永久的硬件错误。有两种具体的实现方法:构造特殊的冗余处理机和使用多个独立的数据库服务器。冗余处理机的造价昂贵,效益很低。实际应用日渐减少。基于数据库的集群系统都是用多个独立的数据库服务器来实现一个逻辑数据库,在任意瞬间,每台处理器运行的都是不同的任务。这种系统可以屏蔽单个或多个服务器的损坏,但是因为没有处理的冗余度,每次恢复的时间比较长,它们需要把被损坏的服务进程在不同的服务器上从新建立起来。ICX让多个独立的数据库服务器作同样的处理。发现处理器问题时的切换不需要重建进程的状态,所以故障屏蔽是极快的。
◆ 通讯链路级的冗余:冗余的通讯链路可以屏蔽瞬时和永久的通讯链路级的错误。基于数据库引擎的集群系统有两种结构:共享磁盘和独立磁盘。RAC, MSCS 和 MySQL CS可以认为是共享磁盘的集群系统。UDB和ASE 是独立磁盘的集群系统。共享磁盘集群系统对网络系统的要求很高,所以通讯的冗余度最小。独立磁盘集群系统可以把磁盘系统独立管理,通讯冗余度较高。 ICX的通讯链路级的冗余度最高,因为它使用的是多个独立的数据库服务器和独立的磁盘系统。 ICX也可以用于共享磁盘系统。 但是冗余度会相应降低。
◆ 软件级的冗余:由于现代 *** 作系统和数据库引擎的高度并发性,由竞争条件、死锁、以及时间相关引发的错误占据了非正常停机服务的绝大多数原因。采用多个冗余的运行数据库进程能屏蔽瞬时和永久的软件错误。基于数据库引擎的集群系统都用多个处理器来实现一个逻辑数据库,它们只能提供部分软件冗余,因为每一瞬间每个处理器执行的都是不同的任务。只有ICX可以提供最大程度的软件级冗余。
◆ 数据冗余:有两类冗余数据集。
被动更新数据集:所有目前的数据复制技术(同步或异步),例如磁盘镜像(EMC的TimeFinder系列)、数据库文件复制(如DoubleTake, Veritas and Legato)以及数据库厂商自带的数据库备份工具都只能产生被动复制数据集。通常,为了实现复制功能,需要消耗掉主服务器5%(异步)到30%(同步)的处理能力。被动更新的数据一般只用于灾难恢复被动更新数据集还有两个致命的问题:一旦主处理机故障造成数据损坏,被动更新的数据集也会被破坏。另外,和主动更新系统相比,被动更新系统对数据网络的带宽要求更高。这是因为它缺少交易的信息,很多数据复制是盲目的。
主动更新数据集:这种数据集需要一台(或多台)独立的备份数据库服务器来管理,由于这种数据集及时可用,它可以有多种用途,例如报表生成,数据挖掘,灾难恢复甚至低质量负载均衡。 同样地,这里也有同步和异步两种技术。
◆ 异步主动复制数据集:这种技术是先把事务处理交给主服务器来完成,然后这些事务处理再被串行地交给备份服务器以执行同样的 *** 作来保证数据的一致性。这种技术生成的数据集和主数据集有一个时间差,所以仅适用于灾难恢复、数据挖掘、报表统计以及有限的在线应用。所有的商用数据库都支持异步主动复制技术。这种办法的难度在于复制队列的管理上,这个队列是用来屏蔽主服务器和备份服务器之间的速度差异的。因为主服务器可以尽可能地利用所有软硬件的并发性来处理并发的事务,而备份服务器只能串行地复制,在高负荷事务处理的情况下,复制队列经常可能溢出。因为没有任何办法来控制事务处理请求的速度,在高负荷事务处理的情况下,复制队列只能经常性地重建。因为所有现代数据库系统都支持热备份和LOG SHIPPING。通过精心策划,应该可以实现不关闭主服务器而重建队列。ICX也支持异步主动复制 ICX的复制队列的重建是通过ICX的自动数据同步软件来完成的,所以不需要人工 *** 作。
◆ 同步主动复制数据集:这种技术要求所有的并发事务处理在所有的数据库服务器上同时完成。一个直接的好处就是没有了队列的管理问题,同时也可以通过负载均衡实现更高的性能和更高的可用性。这种技术也有两种完全不同的实现方法:完全串行化和动态串行化。完全串行化的事务处理来自于主数据库的事务处理引擎,RAC, UDB, MSCS (SQL Server 2005) 和 ASE是用完全串行化并结合两阶段提交协议来实现的,这种设计的目标就是为了获得一份可用于快速灾难恢复的数据集。这种系统有两个关键的问题。第一,两阶段提交协议是一种“ALL OR NOTHING”的协议。仔细研究两阶段提交协议后就能发现,为了获取这备份数据集,事务处理的可用性会降低一半。第二,完全串行化的做法又引进了主-从数据库服务器速度不匹配的问题。强制同步造成整个系统的速度被降低到完全串行化的水平。相反,ICX-UDS采用了动态串行复制引擎。这设计可以充分利用多个独立数据库的处理能力。ICX避免了使用两阶段提交协议,因此一个事务处理只有在集群中的所有服务器全都同时崩溃的情况下才会回滚。
为了防灾,必须使用远程网络。 所以我们在这里讨论远程数据复制的办法。这里大概有四种办法。
◆ 动态远程异步复制:这种办法是指主服务器通过远程网串行地把交易复制到备份服务器上。由于主-副之间的速度不匹配,队列管理的问题就很突出。 由于远程网的速度一般都比较慢,队列溢出的概率大大增加。所有的集群系统都支持这种复制办法,只是队列管理的办法不同而已。DM,FM和RAID都不能支持这种办法。RAID只能在局域网内工作。
◆ 动态远程同步复制:这种办法是指主服务器通过远程网并行地把交易复制备份服务器上。只有ICX 具有这种能力。
◆ 静态远程异步复制:这种办法是指通过远程网把数据串行地复制(不通过数据库服务器)到异地。DM和FM支持这种复制办法。因为串行处理和队列管理的关系,这对于处理量大的系统不适用。但是这种复制办法对应用是透明的,所有集群系统都可采用
◆ 静态远程同步复制:这种办法也是指通过远程网把数据串行地复制(不通过数据库服务器)到异地。不同的是,这里没有队列管理。取代队列管理的是发送端的一个新的协议:每次发送都要等接受端确认复制成功。否则回滚。DM和FM都支持这种复制办法。这种办法只能在短距离范围内工作, 大约5 英里光纤的样子。如果超出这个距离范围的话,显然事务处理回滚的概率就会很高。但是这种复制办法对应用是透明的,所有集群系统都可采用。
3)提高数据库安全和数据集可扩展的技术
在提高数据库安全性和数据集可扩性这两方面,可以创新的空间是很小的。数据库最常见的安全办法是口令保护,要么是分布式的,要么是集中式的。在数据库前面增加防火墙会增加额外的延迟,因此,尽管许多安全侵犯事件是来自于公司内部,但是数据库防火墙还是很少被采用。如果数据库集群技术是基于中间件技术实现的,就有可能在不增加额外延迟的情况下 ,在数据经过的路径上实现防火墙功能。ICX完全实现了这种思想。
数据库数据集的可扩性只能通过将数据分布到多个独立的物理服务器上来实现。为了弥补可用性的损失,ICX能被用来提高整个逻辑数据库或者部分重要服务器的处理速度,可用性和安全性。
对于大型网站而言,随着流量的暴增,单一服务器是无法抗住高并发的,所以大型网站都是从最初的单一架构演变为集群分布式架构。淘宝网作为数一数二的电商平台,它开发了很多底层技术框架以适应日益发展的需要。
什么是分布式与负载均衡?
1、分布式
分布式是将一个完整业务拆分为多个子业务(或者本身就是不同的业务)部署在不同服务器之上,比如用户系统、订单系统、商城系统分布部署在不同服务器上。
还有一个概念容易和分布式混淆,那就是集群。集群强调的是同一个业务部署在多台服务器之上。
集群模式下,多个节点中的某个节点挂了是不会影响整体业务的;而分布式环境下若某个节点挂了则可能会影响某个业务(实际上不会,因为业务分布式部署后也会做集群)。
2、负载均衡
负载均衡充当的角色就是“裁判”,它将大量并发流量分摊至多台节点服务器(集群)上进行处理,这样减少了用户等待响应时间。
所以说负载均衡离不开服务集群。
淘宝如何是如何实现分布式、集群和负载均衡的?
1、动静分离
将动态请求与静态请求分别部署在不同服务器上,以便针对性进行优化。
2、分布式服务框架HSF
HSF是阿里的分布式服务框架,经过拆分,各系统间的耦合度大大降低了,更有利于分布式部署。
3、分布式NoSQL框架Tair
Tair是淘宝开源的分布式K/V数据库。
4、高性能Web服务器Tengine
Tengine是基于Nginx二次开发的,性能上比Nginx更好,而且支持更多特性,如:请求合并、限速模块、内置Lua等。可以借助它来做反向代理和负载均衡。
以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流~我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!以上就是关于金蝶云星空报表老是取另外数据中心地址全部的内容,包括:金蝶云星空报表老是取另外数据中心地址、如何理解Linux下的负载均衡、关于JDBC客户端如何连接ORACLE数据库RAC的负载均衡等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)