农历(十月廿一)
关于
友情链接
Toggle navigation
Harries Blog™
追心中的海,逐世界的梦
首页
编程技术
Java
软件架构
移动开发
后端
前端
大数据
数据库
算法
人工智能
测试
代码管理
IT教程
springboot-demo
Java入门教程
bootstrap3
CSS
Apache基础教程
php
ionic 教程
Python
mysql教程
eclipse
Ubuntu VPS系统配置
AngularJS 教程
MongoDB教程
Struts2教程
Redis教程
Spring教程
Git教程
Jenkins进阶系列
openfire参考指南
Java设计模式
HBase教程
Maven教程
hibernate教程
Docker 教程
memcached教程
Quartz指南
Hive教程
Ant教程
ANTLR教程
SpringCloud
java实例教程
springcloud-demo
XStream教程
Hazelcast教程
Elastic-Job-Lite
深入浅出MyBatis
SVN教程
ibaties教程
rabittmq教程
solr教程
Hadoop教程
WebService CXF学习
JPA教程
ActiveMQ中文指南
java-demo
Java内存模型
dubbo教程
python3-demo
Linux入门视频教程
生活感悟
默认分类
博主自留地
一周一本书
一月一个人
互联网
互联网.出海
互联网.IPO
运维
Linux
docker
nginx
windows
监控软件
操作系统
tomcat
虚拟化
vmware
自动化
留言板
转载
发表于 2015年12月08日
浏览 (
849
)
评论 (0)
Sybase RS 介绍
FROM:
http://wenku.baidu.com/view/7de7eb7d27284b73f24250cb.html?from=share_qq
Sybase复制服务器用来满足日益发展的企业客户/服务器计算机环境的需要。
一个使用的复制系统必须考虑到以下的业务要求:
1、数据的可靠性
复制系统将应用系统更加可靠,尽量减少计算机系统失败给业务处理造成的影响。
2、信息传递一致性
分布系统必须保护系统内部数据一致性。
3、高性能
复制系统必须不增加数据源的负担,有效的使用网络,允许每个节点优化本地数据的存取方式。
4、方便集中管理
系统管理员能方便容易的管理分布环境的数据。
5、异构数据源访问
复制系统有能力在不同厂商提供的数据源之间移动传递数据。
6、本地自治
每个节点能决定自己将接受哪些数据,怎样访问修改节点数据。
下面给出一些例子,Sybase如何将复制服务器用于分布式企业客户/服务器环境,复制服务器系统中主要有以下三种类型节点:
Primary(仅本节点有主数据)
其它节点数据均由主节点复制而得。通过修改主节点数据改变其它节点数据。
Secondary(仅含有复制数据)
复制节点用以接收一个或多个主节点的数据。复制节点数据是只读的,不能被修改。
Peer_to Peer(既包括主数据也包含复制数据)
既可以从这个节点复制数据到其它系统,也可从其它节点接受数据。在这种环境中要避免或解决修改冲突。
通常情况下,在一个复制系统中可以包括几种节点,这由应用系统的要求而定。
示例1:One Primary-----Multiple Secondary
这种模式需用于决策支持系统(DSS)。
这是一种简单模式,SYBASE复制服务器提供一种方便有效的方法从中央节点分布数据到多个复制节点,但在复制节点数据只允许读不允许修改。这样的复制机制保护分布环境数据一致。
在图一所示系统中,某公司使用一个中央OLTP数据库,这个数据库在洛杉矶处理进入本系统的订单。订单处理过程由终端或其它客户机直接连到中央OLTP系统。管理组织中其它部门的决策人物(财务部门在洛杉矶;生产部门在达拉斯;销售部门在纽约)都希望看到订单信息来决定本部门的计划。这些决策层应用不允许访问OLTP系统,因此他们希望得到的信息只能依靠中央工作人员给出标准报表,不可能有自己的随机数据检索。
SYBASE复制服务器的使用,改善了应用系统的性能。每个部门可以向中央数据节点订阅自己所需要的数据,这些数据由中央节点传送到各部门本地节点。数据传送过程由复制服务器完成,完全不需要人工干预。一旦本地有了决策支持数据的拷贝,财务,生产,销售部门便可以在本地进行自己的数据操作,而不再需要跨越广域网注册到在洛杉矶的中央数据服务器上。各决策支持系统之间彼此独立,由于不再访问远程数据节点,他们能更快地得到查询信息。
示例2:Multi Primary-----One Secondary
SYBASE复制服务器提供方法将存放在不同节点互相关联的数据聚集在同一节点。以下介绍便是一例。
这是一个跨国公司,分别有生产部门在汉城、法兰克福和墨西哥城,总部在波士顿。在远程三个节点分别存放各自生产情况数据。总部需要实时更新的数据,了解整个 公司情况。复制系统将三个节点数据合并在一起,放在总部供查询。总部看到的数据与各节点实时修改的数据仅几秒钟的差异。
示例3:Peer-to-Peer( 没有update 冲突)
前两例中,复制数据是单方向的,第一例中是从一个节点到多个节点;在第二例中数据从多个节点复制到同一个节点,但是复制并不是只能将数据单方向传递。本例将展示一个复制系统环境,每个分布系统中即包含有主数据也包含有复制数据。这个公司跨越全美(亚特兰大,芝加哥,西雅图),几个节点数据系统希望将雇员信息合并在一起。但每个地区只管理本地区雇员的信息(其它地区雇员信息在本地只能阅读)。SYBASE复制服务器提供一个机制将分布的雇员信息得以共享。
因为每个雇员仅属于一个地区,那么本地区雇员信息能从归并在一起的完整数据集中识别出来,不致于造成修改冲突,每个节点上,本地区雇员数据为主数据,另两地数据在本节点为复制数据。在系统中有这样约定,亚特兰大分公司仅能修改亚特兰大雇员信息,芝加哥同样仅能修改芝加哥数据等等。这个系统中的每个节点均能阅览完整的全公司的数据,这些数据是实时更新的。
示例4:Peer-to-Peer ( 有update 冲突)
在上例中,尽管每个节点存放公司全部信息,但每个节点仅允许修改本地相关数据,不可能有两个节点修改同一数据。但某些情况下,业务需求要在多于一个节点上修改共同的数据。本例描写一个跨国软件公司技术支持在广域上的运作。公司技术支持分布在亚洲,欧洲,北美,每个地区技术支持都在响应本地用户要求。
在网上的技术支持人员共享一个Bug数据库。用户的全部问题记录在这个数据库中。三个节点上的技术支持人员都应该能插入和修改Bug数据库中的信息。因为现在有多于一个节点在同一时间修改相同的数据,那么技术支持的应用程序必须有办法解决修改冲突。
示例5:Single Primary-Single Secondary
从技术角度上,复制服务器有另一个潜在的能力,它提供了一个有价值的可行的方法实现了近似实时的数据库备份。这个热备份数据可在主节点失败情况下,允许用户应用程序转换到热备份数据库上继续工作。
这是一个大的电力公司,在中央电站有一个主数据库控制从发电到电力传送到最终用户的整个过程。控制电力传输的应用要求相当严格,在主节点需要一些冗余的资源保障系统安全可靠。例如主节点数据镜像到本节点的几个磁盘等等。但是在一些极端的事件发生时,比如地震,水灾,火灾等,电力传输线路也将受到破坏,既使有镜像数据,也无法保障系统工作。
在此例中,在广域网的另一个端点有一个完整的数据备份,在灾难发生时,它使应用程序连接到热备份数据源上,继续工作。
在建立这样冗余系统时,有一个重要的因素必须给予考虑。由于复制服务器的热备份仅能在正常条件下保证数据实时一致。因此在设计这样的应用系统时,必须能允许某种情况下的短暂的数据不一致。
复制服务器是如何工作的?
在这节中我们将描述SYBASE复制服务器产品的各个部份及它们的功能。复制数据操作可以分为四个部分:
对一个或多个数据源改变数据事务的监测
在网络上传送事务
将事务分发给各个目标数据源
复制系统管理
在SYBASE复制服务器环境中,对源数据库中数据的修改由一个称为日志传输管理(
Log Transfer Manager
简称
LTM
)的进程来实现。最典型的结构中LTM与源数据库放在同一个硬件平台上。
LTM将Log传送给复制服务器进程,复制服务器进程可以在另一机器上。在一个复制系统中,若干复制服务器的配置,可以分布在不同的局域网上,根据复制系统的配置,改变数据的Log从一个复制服务器传送到其它复制服务器,最后由这些复制服务器将数据改变传给目标数据库。完整的数据复制操作进程可以由一个基于GUI环境的复制服务器管理界面来管理和监控。因为在复制系统中使用了稳定队列(
Stable Queue
),数据从源数据库到目标数据库的途径中,能够避免系统中任一部分失败发生的数据丢失现象。
稳定队列是一个安全机制,容错环境失败
。
日志传输管理
SYBASE复制服务器产品有一部分为Log Transfer Manager(LTM).LTM是一个低调度进程,最典型的配置方法是将LTM运行在与源数据库相同的平台上。如果复制系统中将有多于一个节点的源数据被修改,则需要每个节点有一个LTM。
LTM的任务是监视并捕获与它相联数据库的事务,而且将这些事务传送给复制服务器,以便复制服务器将事务再传给其它的复制节点。
LTM有一个联接到SQL Server,读取主SQL Server的事务日志,监测它是否改变了主节点数据。
事务日志是用来观察主节点数据变化的最好的信息来源
,因为它包含已经提交给Server的事务,可用来恢复事务。在图六中,当某应用程序修改了主节点数据时,这个事务被记在事务日志中,以保证数据一致性,当提交时数据改变写入磁盘。复制进程不干涉数据库功能,只是LTM在监测SQL Server中的事务,当发现某个事务应该被复制时,将它传送给SYBASE复制服务器。
LTM进程,是一个由SYBASE Open Server/Open Client编写的应用程序,并有一个联接到SYBASE复制服务器。这个进程可以驻留在单独的机器上。正是由于SYBASE复制服务器进程可以运行在与主数据源不同的机器上,才使用户将复制系统对主数据库施加的负担降低到最小限度。
LTM进程可以将独立于主数据源命令的事务翻译给复制服务器。例如,一个事务中完成的是“update”,LTM将把事务传送给复制服务器并且给予解释,翻译成主节点完成的update命令。这个源数据库事务到复制服务器翻译或映射所认识的命令的机制是SYBASE复制服务器技术的一个重要策略。从LTM到复制服务器的界面对用户来说是可见的。也就是说,如果你能获得数据源的事务,就可以将它映射到SYBASE复制系统环境并且复制它。与其它竞争厂家产品不同,SYBASE复制技术允许建立应用程序来复制异构数据源。
数据在局域网和广域网上的传送
现在让我们来看,当信息从LTM传送到与之相联的复制服务器之后,又发生了什么?如果当数据与复制数据在不同的局域网上,那么复制进程将要把数据从主数据库的复制服务器传送到负责复制节点数据库的复制服务器。请注意,如果主节点与复制节点同在一个局域网上,那么可以省掉第二个复制服务器。在单一局域网复制环境中,一个复制服务器可以完成接受LTM数据并传送到复制节点两项任务,如图七。
在多局域网环境中,不同SYBASE复制服务器之间路由可以是直接的,如图七不需要中间节点。也可以是间接的如图八。在主复制服务器与从复制服务器之间有中间传送节点。这些直接的或间接的路由是由系统管理员来配置的,允许系统管理员根据网络限制及应用程序传送数据的需要,有效地使用整个系统环境。在直接的及间接的配置状态中,可用复制服务器管理软件监视路由上传递的信息。
数据到达复制节点
在上两个标题中我们已看到LTM进程与服务器进程是如何协同工作的,将事务从主节点数据库送过网络到达目标节点。现在来看复制过程最后处理程序,复制服务器怎样把数据送到目标数据库。
前面已提到过,SYBASE复制服务器是由基于SYBASE Open Server/Open Client的应用程序。在复制的最后过程,复制服务器在目标数据库上建立一个联接,将从主数据库接收到的数据写入复制数据库。同样,复制节点可以是非SYBASE数据系统。
SYBASE复制服务器以标准客户/服务器联接方式连到目标数据库。并有足够的权限修改目标数据库。下面我们可以看到复制服务器怎样知道传送哪些事务,传送到什么地方。包含复制数据的节点要向复制系统订购它所需要的数据。至于订购单信息被存在与之相关的SYBASE复制服务器数据字典中。每个复制服务器有一个相应的数据字典。简称RSSD,用来存贮复制系统信息。
因为SYBASE复制服务器仅是简单地象其客户程序一样把事务传送到目标数据源,可以是非SYBASE数据源。用户可以使用SYBASE Omni SQL Gateway,让复制服务器联接到第三方数据源,使复制服务器认为复制节点就是SYBASE,从复制服务器到目标数据源之间传送数据不需做任何形式变化。
复制系统配置和管理工具
Replication Server Manager(RSM)是一个功能性很强的系统管理工具,使我们能成功地实现和管理分布复制环境。SYBASE正是认识到这一点,设计复制服务器的同时也设计了复制服务器管理程序。
正文到此结束
赞
0
赏
分享
本文标签:
ip
sql
组织
tab
安全
HTML
2015
翻译
标题
时间
http
服务器
cat
需求
src
备份
产品
管理
client
update
进程
数据
企业
数据库
UI
SQL Server
配置
软件
版权声明:
本文为互联网转载文章,出处已在文章中说明(部分除外)。如果侵权,请
联系本站长
删除,谢谢。
本文海报:
生成海报一
生成海报二
上一篇
Strictmode的使用
下一篇
论oracle备库的设计方案
热门推荐
openfire数据库安装指南
浏览(13,739)
评论(0)
Caffe 深度学习框架上手教程
浏览(10,453)
评论(0)
ReactiveCocoa入门教程:第一部分
浏览(11,285)
评论(0)
开源HIDS-OSSEC使用实例:监测CC攻击
浏览(11,192)
评论(0)
Decorators in ES7
浏览(15,735)
评论(4)
用Electron(Atom编辑器的兄弟项目)开发桌面应用
浏览(28,761)
评论(0)
Windows下JetBrains CLion中文输出乱码的解决方法
浏览(12,212)
评论(1)
同步-@synchronized, NSLock, pthread, OSSpinLock性能比较
浏览(11,176)
评论(0)
Seaweedfs之Volume读请求重定向
浏览(25,453)
评论(3)
HTML、CSS及JavaScript : 有Promise,不会搞大肚子
浏览(13,312)
评论(0)
相关文章
公司要投注多少人力去做 Growth?
强化学习系列之五:进入实际问题的关键——价值函数近似
spring boot - actuator介绍
咱们一起聊聊Java异常
从源码角度看WMS
搭上基于SpringBoot事务思想实战专车
电商架构回顾-V1.0
spring系列框架篇-承接各类型中小型项目-期待与您的长期合作!
挖坑法实现快速排序(Java,Scala)
smart-doc 1.8.6 发布,Java 零注解文档生成工具
说给你听
本文目录
随机标签
ElasticsearchRestHealthIndicator
UTC
Brian Troutwine
插件
富豪
垃圾回收
B2C电子商务
ldap
Spring Cloud Consul
XOR.DDoS
Jobs
oom killer
FileZilla
Spring Cloud Circuit Breaker
VScode
ModelAndView
最少活跃数
垃圾回收
nsa病毒
EntityManagerFactory
kafaka
操作手册
香烟
TextRank
scroll
SHEIN
flxhr
JPA JPQL/持久化查询语言
创业之路
GMT
Developer
IOS
hazelcast
EmbeddedSolrServer
olingo
JVM(
德国工人
分布式事务
乌兰布统
regex左匹配
Activation
Windows Server 2003
akka
synchronized
空气币
文档生成能力
订单处理
书法家
filter
Spring Cloud Config
entity
书籍教程
springboot-demo
Java入门教程
bootstrap3
CSS
Apache基础教程
php
ionic 教程
Python
mysql教程
eclipse
Ubuntu VPS系统配置
AngularJS 教程
MongoDB教程
Struts2教程
Redis教程
Spring教程
Git教程
Jenkins进阶系列
openfire参考指南
Java设计模式
HBase教程
Maven教程
hibernate教程
Docker 教程
memcached教程
Quartz指南
Hive教程
Ant教程
ANTLR教程
SpringCloud
java实例教程
springcloud-demo
XStream教程
Hazelcast教程
Elastic-Job-Lite
深入浅出MyBatis
SVN教程
ibaties教程
rabittmq教程
solr教程
Hadoop教程
WebService CXF学习
JPA教程
ActiveMQ中文指南
java-demo
Java内存模型
dubbo教程
python3-demo
Linux入门视频教程
近期评论
admin
文章和留言都翻到11页了 没有OOM
admin
我试一下
匿名
朋友,翻页到11页,及以后,会出现OOM,无法访问
可以
搞个gitee的项目
匿名
666
admin
版本号是多少,你可以下载哪个代码仓库,jdk选1.8 直接跑就行
极客青年
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'demo.et.mysql.MysqlTests': Unsatisfied dependency expressed through field 'userMapper'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'demo.et.mysql.mapper.UserMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:643) at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:130) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1422) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireBeanProperties(AbstractAutowireCapableBeanFactory.java:393) at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:119) at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83) at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance(SpringBootDependencyInjectionTestExecutionListener.java:43) at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:244) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38) at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'demo.et.mysql.mapper.UserMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1695) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1253) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1207) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640) ... 30 more
极客青年
原封不动的代码报错如下:
极客青年
一股清流,敬佩
随机文章
站长推荐
近期文章
1
分布式存储的元数据设计
2
MongoDB学习笔记~大叔分享批量添加—批量更新—批量删除
3
CUDA ---- Memory Model
4
Linux安全之SYN攻击原理及处理
5
Teiid 8.11 CR1 发布,数据虚拟化系统
6
Laravel 5.1 LTS 发布,支持 PSR-2
7
逻辑架构和物理架构
8
单精度浮点数在计算机中的表示方法
9
Node.js 中使用 Redis 来实现定时任务
10
R语言绘制地图
1
VPS 自我监控
2
springboot接入多个ES启动时候自检报错
3
配置虚拟站点
4
openfire协议支持指南
5
修改上传文件权限
6
OpenVZ VPS 额外支持
7
2015年北京下第一场雪留念
8
openfire定制指南
9
mysql存储过程实例一:游标的使用
10
Linux删除或者新增SWAP分区
1
Spring Cloud Consul实现选举机制
2
Spring Boot集成ShedLock实现分布式定时任务
3
利用oss进行数据库和网站图片备份
4
Spring Cloud Stream实现数据流处理
5
Python3访问MySQL数据库快速入门Demo
6
Github开源项目作者可以免费申请 JetBrains 全家桶
7
Spring Cloud Vault快速入门Demo
8
Spring Cloud Gateway快速入门Demo
9
Spring Cloud Contract快速入门Demo
10
Spring Cloud Consul快速入门Demo
网站信息
文章总数:82,714 篇
文件总数:284,287 个
标签总数:2,393 个
分类总数:85 个
留言数量:2,560 条
在线人数:617 人
运行天数:4,408天
最后更新:2024年11月21日17点
×
输入密码查看文章详情
×
搜索文章
搜索
热门搜索:
Java
Springboot
Linux
Maven
Bootstrap
阿里云
×
评论信息框
可以通过QQ号实时获取昵称和头像
QQ
昵称
邮箱
网址
提交评论
×
山无棱江水为竭,冬雷震震夏雨雪,才敢请君舍
支付宝
微信
转账时请备注“
博客赞助
”
Loading...