-
用户体验要素 第二版
2016-10-22 10:57:00全书共8章,包括关于用户体验以及为什么它如此重要,认识这些要素、战略层、范围层、结构层、框架层、表现层以及要素的应用。 全书用清晰的说明和生动的图形分析了以用户为中心的设计方法(UCD) 来进行网站设计的复杂... -
89-java-springcloud(02)-注册中心(1)-Eureka
2020-06-30 17:26:26注册中心,主要包括3个组件要素,第一个就是注册中心,第二个就是消费者,第三个就是生产者. 注册中心 注册中心就是类似于淘宝商城,他的作用有两个. 1.消费者要消费,调用接口,他告诉消费者,调用的服务的ip地址和端口是...注册中心
1.什么是注册中心?
注册中心,主要包括3个组件要素,第一个就是注册中心,第二个就是消费者,第三个就是生产者.注册中心
注册中心就是类似于淘宝商城,他的作用有两个.- 1.消费者要消费,调用接口,他告诉消费者,调用的服务的ip地址和端口是哪个.
- 2.为了保证消费者每次访问的接口都正确,不是过期的地址,虽然消费者和生产者注册上来,但中途由于服务器宕机,关机等,他需要保证提供的服务对应的ip地址的实时性.
由于以上原因,注册中心必须保证服务与ip地址的实时对应关系,这就涉及到了一致性协议.CAP理论.
消费者:
消费者就是我们需要调用其他的微服务模块的接口,获取数据.但是一个微服务可能既是消费者,也是生产者,就像淘宝用户,既可以是卖家,也可以是买家.
生产者:
微服务的提供者,也就是提供接口,给其他微服务模块调用.同时一个生产者也可以是一个消费者.2.解释CAP理论
CAP理论指的是一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。拿一个网上的图来看看。
Consistency 一致性
一致性指的是所有节点在同一时间的数据完全一致。就好比刚刚举得例子中,小明和小华读取的都是正确的数据,对他们用户来说,就好像是操作了同一个数据库的同一个数据一样。因此对于一致性,也可以分为从客户端和服务端两个不同的视角来理解。
(1)客户端
从客户端来看,一致性主要指的是多并发访问时更新过的数据如何获取的问题。也就是小明和小华同时访问,如何获取更新的最新的数据。
(2)服务端
从服务端来看,则是更新如何分布到整个系统,以保证数据最终一致。也就是N1节点和N2节点如何通信保持数据的一致。
一致性分类
对于一致性,一致的程度不同大体可以分为强、弱、最终一致性三类。-
强一致性
对于关系型数据库,要求更新过的数据能被后续的访问都能看到,这是强一致性。 -
弱一致性
如果能容忍后续的部分或者全部访问不到,则是弱一致性。 -
最终一致性
如果经过一段时间后要求能访问到更新后的数据,则是最终一致性。
可用性(Availability)
可用性指服务一直可用,而且是正常响应时间。就好比刚刚的N1和N2节点,不管什么时候访问,都可以正常的获取数据值。而不会出现问题。好的可用性主要是指系统能够很好的为用户服务,不出现用户操作失败或者访问超时等用户体验不好的情况。
对于可用性来说就比较好理解了。
分区容错性(Partition tolerance)
分区容错性指在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。就好比是N1节点和N2节点出现故障,但是依然可以很好地对外提供服务。
这个分区容错性也是很好理解。
3.为什么需要注册中心?
- 一个个的微服务模块之间调用,以前使用的ip地址调用,如果服务宕机,则我们不能及时获知,代码就会报错.
- 就算我们可以在调用之前,先测试以下对方的测试端口,但是这会导致我们的编码难度增高
- 如果我们调用的服务是集群的,有多个服务,我们还需要自己书写负载均衡的算法.
4.注册中心对比
现在市面上的注册中心对比
4.1 架构及性能对比图
4.2 使用对比
Eureka Zookeeper Consul Nacos server搭建 引入server的依赖,在代码中搭建一个server项目 安装包 安装包 安装包 pom spring-cloud-starter-netflix-eureka-client spring-cloud-starter-zookeeper-discovery spring-cloud-starter-consul-discovery 1.cloud-alibaba管理依赖版本 2.spring-cloud-starter-alibaba-nacos-discovery yml 配置连接 配置连接 配置连接 配置连接 启动注解 @EnableEurekaClient @EnableDiscoveryClient @EnableDiscoveryClient @EnableDiscoveryClient (1) server端搭建
- Eureka是引入Eureka-server的依赖,在项目中搭建一个server端服务项目.具体怎么搭建,请看下面的Eureka详解.
- zookeeper是下载安装包,安装server端
- consul也是下载安装包,安装server端
- nacos也是下载安装包,安装server端.
(2) 客户端 pom依赖
- Eureka是引入eureka-client客户端依赖,并且父级版本管理是spring-cloud-dependencies;
<!-- Eureka 的client --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
- zookeeper是引入zookeeper的启动依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId> </dependency>
- consul是引入consul的启动依赖
<!-- consul的依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-consul-discovery</artifactId> </dependency>
- nacos是引入nacos的启动依赖
父项目中需引入cloud-alibaba来管理依赖
<!--spring cloud alibaba 2.1.0.RELEASE--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.1.0.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency>
子module项目需引入nacos的依赖
<!--SpringCloud ailibaba nacos --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
(3) yml配置
- eureka
eureka: client: register-with-eureka: true #向服务中心注册 fetchRegistry: true #向服务中心拉取注册信息 service-url: #Eureka的地址 #单机版 defaultZone: http://eureka7001.com:7001/eureka #集群版 #defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka #集群版
- zookeeper
spring: application: name: cloud-consumer-order cloud: zookeeper: #zookeeper的连接配置 connect-string: 118.190.58.27:2181,118.190.58.27:2182,118.190.58.27:2183
- consul
spring: application: name: consul-consumer-order cloud: consul: #consul的连接配置 host: localhost #主机 port: 8500 #端口 discovery: service-name: ${spring.application.name}
- nacos
spring: application: name: nacos-order-consumer cloud: nacos: #nacos的配置 discovery: server-addr: localhost:8848
(4) 启动注解
- eureka使用的是@EnableEurekaClient
- zookeeper/consul/nacos使用的是@EnableDiscoveryClient
Eureka
Eureka分为两大组件,第一个是Eureka服务端,一个是Eureka客户端,其实所有的注册中心,也不止注册中心,是很多组件都是这样的设计模式,包括MQ也是.都是服务端和客户端,其实就是平台模式.
区别就是,注册中心类似于淘宝,我只是提供一个平台,你买东西还是得联系具体的卖家.而消息中间价MQ就类似于,你把东西卖给我,你就不用管了,我再去卖给其他人,这就是中间商,但是模式都是客户端,服务端模式.一.搭建Eureka的服务端
单机版
1.建module
略
2.改pom<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <!--继承父项目--> <parent> <artifactId>cloud2020</artifactId> <groupId>com.atguigu.springcloud</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>cloud-eureka-server7001</artifactId> <dependencies> <!--Eureka的server--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <!--公共的modul--> <dependency> <groupId>com.atguigu.springcloud</groupId> <artifactId>cloud-api-commons</artifactId> <version>${project.version}</version> </dependency> <!-- web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 监控 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!-- 热部署 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <!-- lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <!-- springboot的测试 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--junit--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> </dependencies> </project>
3.写yml
server: #server的端口 port: 7001 eureka: instance: #这是陪着Eureka注册到server上的显示相关信息 hostname: eureka7001.com #eureka服务端显示的实例名字 client: #这是配置客户端连接到Server的连接相关的信息 register-with-eureka: false #表识不向注册中心注册自己 fetch-registry: false #表示自己就是注册中心,职责是维护服务实例,并不需要去检索服务 service-url: #单机版 设置与eureka server交互的地址查询服务和注册服务都需要依赖这个地址 defaultZone: http://localhost:${server.port}/eureka/ #集群版,注册到7002 #defaultZone: http://eureka7002.com:7002/eureka/ server: # 这是配置Eureka Server服务相关的信息 enable-self-preservation: false # 关闭自我保护 eviction-interval-timer-in-ms: 2000
4.主启动
@EnableEurekaServer 启动EurekaServer的注解//启动Eureka服务 @EnableEurekaServer @SpringBootApplication public class EurekaMain7001 { public static void main(String[] args) { SpringApplication.run(EurekaMain7001.class,args); } }
5.测试
http://localhost:7001/
集群版
集群版就是在复制一个上面的项目,端口号修改一下,在yml注册的时候,相互注册就好了.二.搭建Eureka的客户端
1.建module
略
2.改pom<!--添加eureka-client的依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
3.写yml
eureka: client: register-with-eureka: true #向服务中心注册 fetchRegistry: true #向服务中心拉取注册信息 service-url: #Eureka的地址 #单机版 defaultZone: http://eureka7001.com:7001/eureka #集群版 一定不能多了上面的最后的 #defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka # 微服务服务实例id的修改, instance: #实例id instance-id: payment8001 #ip地址的显示 prefer-ip-address: true #Eureka客户端向服务端发送心跳间隔时间 lease-renewal-interval-in-seconds: 1 #Eureka服务端再收到最后一次心跳等待时间上线,超时将剔除 lease-expiration-duration-in-seconds: 2
4.主启动
@EnableFeignClients //启动openFeign@SpringBootApplication @EnableFeignClients //启动openFeign public class OrderFeignMain80 { public static void main(String[] args) { SpringApplication.run(OrderFeignMain80.class,args); } }
5.业务代码
5.1 向spring容器中注入RestTemplate对象
@Configuration public class ApplicationContextConfig { /** * 注入一个rest风格调用主体类 * @return */ @Bean //负载均衡策略,使用集群策略,如果调用的服务,有多个服务提供者,则这个注解不能少,少了就会报错(因为计算机不知道调用哪个具体的服务实例) //这是ribbon的负责均衡注解,因为eureka已经集成了ribbon,所以就可以直接用此注解 @LoadBalanced public RestTemplate getRestTemplate(){ return new RestTemplate(); } }
5.2 业务代码发起远程调用
@RestController @Slf4j public class OrderController { //public static final String PAYMENT_URL = "http://localhost:8001"; 单机版,写死 public static final String PAYMENT_URL = "http://CLOUD-PAYMENT-SERVICE"; //集群版,根据服务名来选择提供服务的服务 @Autowired private RestTemplate template; @GetMapping("/consumer/payment/{id}") public CommonResult findPaymentById(@PathVariable("id") Long id){ CommonResult result = template.getForObject(PAYMENT_URL + "/payment/" + id, CommonResult.class); return result; } @PostMapping("/consumer/payment") public CommonResult create(Payment payment){ CommonResult result = template.postForObject(PAYMENT_URL + "/payment", payment, CommonResult.class); return result; } //利用restTemplate获取更详细的结果,包括状态码等信息 @GetMapping("/consumer/payment/getForEntity/{id}") public CommonResult findPaymentById2(@PathVariable("id") Long id){ ResponseEntity<CommonResult> entity = template.getForEntity(PAYMENT_URL + "/payment/" + id, CommonResult.class); log.info(entity.getStatusCode().getReasonPhrase()); if(entity.getStatusCode().is2xxSuccessful()){ //返回相应状态码为2xx,表示成功 return entity.getBody(); }else { return new CommonResult(444,"没有查询到该id的记录,该id为:" + id); } } }
以上就是Eureka的使用.
-
什么是Scratch
2019-07-21 17:29:06不同地方上百万人都在制作自己的Scratch项目,包括家庭,学校,博物馆,图书馆和社区中心。计算机编程能力是现今社会文化的组成要素。在 Scratch 学习的过程中,人们也同时获得了解决问题、设计思想、意见交流的重要...Scratch是由麻省理工学院(MIT) 设计开发的用于计算机编程教育的软件,Scratch特别为8到16岁孩子设计,但几乎所有年龄的人都在使用它。不同地方上百万人都在制作自己的Scratch项目,包括家庭,学校,博物馆,图书馆和社区中心。计算机编程能力是现今社会文化的组成要素。在 Scratch 学习的过程中,人们也同时获得了解决问题、设计思想、意见交流的重要策略。
Scratch是开源的,其项目源码托管在Github,访问地址为:https://github.com/LLK
目前为止,主流使用的官方版本为:
Scratch 1.4
Scratch 2.0
Scratch Desktop (也称为Scratch 3.0)
为方便,以上版本皆可点击此处下载,包含Windows及Mac OSX版,其中Scratch 2.0需要先安装Adobe AIR才能安装。
-
以企业为中心的SOI
2007-05-15 16:31:00本文讨论企业整合(集成)的新发展:...作者讨论了 SOI 解决方案所涉及的要素,和这些要素相关的技术、标准以及IBM的产品支持,最后作为总结将它们包括在 IBM 的集成参考架构中,指出如何实现各种集成需求。本文还讨论了本文讨论企业整合(集成)的新发展:以服务为中心的集成(Service-Oriented Integration,简称 SOI)。 您将了解到什么是 SOI,推动 SOI 发展的因素以及SOI 带来的价值。作者讨论了 SOI 解决方案所涉及的要素,和这些要素相关的技术、标准以及IBM的产品支持,最后作为总结将它们包括在 IBM 的集成参考架构中,指出如何实现各种集成需求。本文还讨论了在企业集成实践中需要重点注意的事情,如战略规划和IT管理。本文的姊妹篇"以服务为中心的企业整合-案例分析",用一个实际案例来说明基于 IBM 产品的实际 SOI 应用,帮助读者感性地理解 SOI。
"以服务为中心的集成"是英文词语"Service-Oriented Integration"的中文翻译,简称 SOI。 它可以定义为:在"以服务为中心的体系架构"(Service-Oriented Architecture,SOA)中,通过服务的交互来集成各企业的 IT 资源,如分布的应用或者数据,帮助企业 IT 部门将已有但老旧而不灵活的系统集成起来,释放其中功能或数据为可重用的服务与业务流程。
企业集成的推动因素。推动"企业应用集成"(Enterprise Application Integration, EAI )的因素,来自商务和技术两个方面。从商务的角度,今天企业要在全球化的经济环境中求生存和发展,就必须努力适应越来越强的竞争和越来越快的变化,这意味着一个企业的业务模型要变得灵活以快速应变,也就是随需应变。在一个企业的业务模型变得灵活的转型过程中,需要将业务流程不断地自动化,然后跨部门横向集成它们,并且管理和优化它们,这意味着支撑这些流程的技术基础,即 IT 应用和数据资源等,需要在企业范围内集成。所以,业务灵活应变的能力是 SOI 的驱动因素之一。
在技术方面,IT 部门面临着业务部门越来越高的期望值,就是用更少的钱做更多的事情,但要做得更快、更好,这迫使 IT 部门考虑如何最大程度地重用已有应用的功能和数据资源,来支持新应用的开发。但这种重用面临着如何将高度异构、分布的各个应用集成起来的难题,SOI是目前最有效的解决之道。在 SOI 中,首先各个应用的功能被封装为基于标准来描述和供访问的服务;其次,借助于 SOI 的通用连接能力,这些来自不同应用的服务,不需要关心对方的位置和实现技术,以松散耦合的方式相互交互来完成集成,所以只要服务的接口描述不变,服务的使用者和提供者双方可以自由发生变化而互不影响;最后,通过服务组合,服务可以按不同的方式来组合成为不同的业务流程。当某个业务流程发生变化的时候,大多数时候,我们调整组装服务的方式来满足这种变化。总之,这种通过重用粗粒度服务而不是在底层编程来开发新应用以满足业务新需求的方法,使得 IT 组织能够以更少的投入、更快的速度、更好的质量来开发应用。综上所述,可以灵活应变的重用方式,是 SOI 的另一个驱动因素。
集成解决方案的发展沿革。集成企业应用的方法各种各样,初级一点的借助于简单的机制如应用编程接口,管道、共享目录和文件,或者某些传输协议如 FTP 来交换数据和互操作;高级一点的则使用各种消息中间件来提供消息的传输、转换、合并、路由和分发、事件的发布和订阅等;分布式计算技术,如 CORBA,COM 等,也有较广的使用。
在初期实践中,应用之间的连接拓扑大多数情况下是点对点的,硬编码的,所使用的协议是非标准的,功能的提供者和使用者之间是紧耦合的,功能的粒度通常较细,数据的表示也不统一。随着集成复杂度的增长,和实践经验的总结,开始出现一些从好的实践中总结出来的集成模式,如消息中枢(Message Backbone)、信息总线、应用集成中心(Application Integration Hub),这些模式从不同的角度以不同的方式来管理集成的复杂性,但都或多或少地尝试提供一个集成基础设施来简化应用之间日趋复杂的连接拓扑,提供异构数据和功能访问方式之间的转换,甚至提供一致的数据和功能表示与访问方式。通过元数据和应用相关的领域知识,这些集成基础实施提供了很多中介和转换的机制与模式来实现高级的功能,如路由、动态选择等能力。
随着互联网络技术的发展、普及和应用,相关技术和标准,如 XML 和 Web Service,被广为接受,这给应用集成带来了新的发展。企业应用架构的风格开始朝着以服务为中心的方向发展,而企业应用集成也转向以服务为中心的集成,服务的描述和访问基于开放一致的标准(如 WSDL),连接应用的基础设施继承了过去发展的成果,并通过支持开放标准,来提供通用的连接服务,包括基本的服务如消息传输、转换,事件的发布和订阅,服务的中介(选择、路由),和高级的服务如安全、事务、服务质量,以及可管理性,来使得服务在一个标准、开放、可靠、安全、可管理、满足服务质量要求的环境下,以松散耦合的方式相互交户,根据需求动态地进行企业应用集成,达成非常高程度的灵活应变能力和重用能力。SOI 是对现有集成技术与实践的总结和标准化。
SOI 的好处。SOI 继承和发展了传统的 EAI,比较而言,SOI 的好处在于:
- 定义良好而又基于标准的接口 - 服务的描述易于理解,而且标准一致
- 实现技术和位置的透明 - 提供服务功能的应用,它的位置以及所使用的实现技术被接口所屏蔽,事实上,不需要一个固定的服务提供者
- 灵活性 - 只要服务的接口不变,服务的提供者和服务的使用者都可以变化而不影响彼此,从而将变化带来的影响减少到了最少
- 重用能力
- 渐进式集成 - 在 SOI 中,通过将若干已有系统的相关功能转化为服务来进行集成。随着这些项目的进行,可重用的服务越来越多,最终,新的集成需求将绝大多数可以通过已有的服务来完成。所以,我们可以从当前重要的集成需求开始来封装已有系统的功能和开发必要的新服务,以渐进的方式逐步地扩展到整个企业范围内的集成。更重要的是,由于服务的灵活性,即使已有系统迁移到新的技术平台,甚至是被替代,都不会影响到依赖于这个应用所提供功能的那些应用,从而保证了集成对变化的适应能力,使得业务灵活性有一个坚实的基础。这也意味着从传统规模大、投入大、周期长、见效慢、风险高、专有技术,转向小步快跑、见效迅速、风险低、基于标准的集成方式。这对于如今面对业务需求快速变化的 IT 机构来说,SOI 在投入和工程方面的好处,是非常吸引人的
通常,完整的SOI 解决方案包括如下要素:
- 代表应用的功能和数据资源的服务;
- 提供连接服务的基础设施即企业服务总线(Enterprise Service Bus, ESB),连接已有应用的连接器(Connector)和适配器(Adapter);
- 元数据及其管理如服务描述和服务注册管理(Service Registry)等;
- 将服务组合成业务流程的引擎如 BPEL4WS 引擎;
- 业务流程管理和业务绩效管理的部分;
- 一个基于标准的编程模型以及支持它的建模、开发和组装、测试、部署和管理的端到端工具环境;
IBM的 Websphere 业务集成参考架构(见图1,以下称参考架构)是典型的以服务为中心的企业集成架构,本文接下来的讨论都将以此参考架构为背景进行。
以服务为中心的企业集成采用"关注点分离"(Separation of Concern)的方法规划企业集成中的各种架构元素,同时从服务视角规划每种架构元素提供的服务,以及服务如何被组合在一起完成某种类型的集成。这里架构元素提供的服务既包括狭义的服务(WSDL描述),也包括广义的服务(某种能力)。从服务为中心的视角看来,企业集成的架构按图1所示的方式划分为六大类:
- 业务逻辑服务(Business Logic Service):包括用于实现业务逻辑的服务,和执行业务逻辑的能力。这其中包括业务应用服务(Business Application Service)、业务伙伴服务(Partner Service)以及应用和信息资产(Application and Information asset)。
- 控制服务(Control Service):包括实现人(people),流程(process)和信息(information)集成的服务,以及执行这些集成逻辑的能力。
- 连接服务(Connectivity Service):连接服务通过提供企业服务总线提供分布在各种架构元素中服务间的连接性。
- 业务创新和优化服务(Business Innovation and Optimization Service):用于监控业务系统运行时服务的业务性能,并通过及时了解到的业务性能和变化,采取措施适应变化的市场。
- 开发服务(Development Service):贯彻整个软件开发生命周期的开发平台,从需求分析,到建模、设计、开发、测试,维护全面的工具支持。
- IT服务管理(IT Service Management):支持业务系统运行的各种基础设施管理能力或服务,如安全服务、目录服务、系统管理和资源虚拟化。
企业服务总线(Enterprise Service Bus),以下简称ESB, 是过去消息中间件的发展,ESB 采用了"总线"这样一种模式来管理和简化应用之间的集成拓扑结构,以广为接受的开放标准为基础来支持应用之间在消息、事件和服务的级别上动态地互联互通。
ESB 的基本特征和能力包括:描述服务的元数据和服务注册管理;在服务请求者和提供者之间传递数据,以及对这些数据进行转换的能力,并支持由实践中总结出来的一些模式如同步模式,异步模式等;发现、路由、匹配和选择的能力,以支持服务之间的动态交互,解耦服务请求者和服务提供者。高级一些的能力,包括对安全的支持、服务质量保证、可管理性和负载平衡等。
ESB 所提供的基于标准的连接服务,将应用中实现的功能或者数据资源转化为服务请求者能以标准的方式来访问的服务;当请求者来请求一个服务时,ESB 中这种中介转化过程可能简单到什么也没有,也可能要很复杂的中介服务支持,包括动态地查找、选择一个服务,消息的传递、路由和转换、协议的转换。这种中介过程,是 ESB 借助于服务注册管理以及问题域相关的知识(如业务方面的一些规则等)自动进行的,不需要服务请求者和提供者介入,从而实现了解耦服务请求者和提供者的技术基础,使得服务请求者不需要关心服务提供者的位置和具体实现技术,双方在保持接口不变的情况下,各自可以独立地演变。
所以,ESB 采用总线结构模式简化了应用之间的集成拓扑,通过源自实践的模式,提供了基于标准的通用连接服务,使得服务请求者和服务提供者之间可以以松散耦合、动态的方式交互,从而在不同层次上使得SOI 解决方案是一个松散耦合、灵活的架构。
需要注意的是,ESB 是一种架构模式,不能简单地等同于特定的技术或者产品,但实现 ESB 确实需要各种产品在运行时和工具方面的支持。IBM 有很好的产品支持,运行时支持包括 WebSphere ESB 和 WebSphere Message Broker;而工具方面 IBM 则有 WebSphere Integration Developer,支持用户以图形界面的方式来完成相关的开发任务,如发布服务,使用各种模式,转换消息,定义路由等等。
整合已有应用 - 应用和信息访问服务。已有应用和信息是实现业务逻辑和业务数据的重要资产。通过集成已有的应用和信息将可以在已有企业系统上实现更多增值服务,所以集成已有应用和信息是企业集成中重要的一环。
以服务为中心的企业集成通过应用和信息访问服务(Application and Information Access Service)来实现对已有应用和信息集成。它通过各种适配器技术将已有系统中的业务逻辑和业务数据包装成企业服务总线支持的协议和数据格式。通过企业服务总线,这些被包装起来的业务逻辑和数据就可以方便的参与上层的业务流程,从而已有应用系统的能力可以得以继续发挥。这里的已有应用包括遗留应用、预包装的应用和各种企业数据存储。在参考架构中,主要有两类访问服务:
- 可接入服务(On-Ramp Service): 通过各种消息通信模式(单向、请求/应答和轮询)将业务逻辑和业务数据包装成企业服务总线可以访问的功能。
- 事件发现服务(Event Detect Service) : 提供事件通知服务将已有应用和数据中的变化通过事件框架发布到企业服务总线上。
整合新开发的应用 - 业务应用服务。和已有应用和数据类似,新开发的应用也作为重要的业务逻辑成为企业集成的目标。以服务为中心的企业集成通过业务应用服务(Business Application Service)实现新应用集成。一方面业务应用服务帮助程序员开发可重用、可维护和灵活的业务逻辑组件,另一方面,它也提供运行时的集成提供对业务逻辑组件的自治管理。在参考架构中,有三类业务应用服务:
- 组件服务(Component Service):为可重用的组件提供应用的运行时容器管理服务,如对象持久化、组件安全管理和事务管理等。
- 核心服务(Core Service):提供运行时的服务,包括内存管理、对象实例化和对象池、性能管理和负载均衡、可用性管理等。
- 接口服务(Interface Service):提供和其他企业系统集成的接口,如其他企业应用,数据库、消息系统和管理框架。
整合客户和业务伙伴(B2C/B2B)-伙伴服务。以服务为中心的企业集成通过伙伴服务提供与企业外部的B2B的集成能力。因为业务伙伴系统的异构性,伙伴服务需要支持多种传输协议和数据格式。在参考架构中,提供如下服务:
- 社区服务(Community Service): 用于管理和企业贸易的业务伙伴,支持以交易中心(Trade Hub)为主的集中式管理和以伙伴为中心的自我管理。
- 文档服务(Document Service):用于支持和业务伙伴交换的文档格式,以及交互的流程和状态管理,支持主流的RosettaNet、EDI和AS1/AS2等。
- 协议服务(Protocol Service):为文档的交互提供传输层的支持,包括认证和路由等。
数据整合-信息服务。企业数据的分布性和异构性是应用系统方便访问企业数据和在企业数据之上提供增值服务的主要障碍。数据集成和聚合技术在这种背景下诞生,用于提供对分布式数据和异构数据的透明访问。
以服务为中心的企业集成通过信息服务提供集成数据的能力,目前主要包括如下集中信息服务:
- 联邦服务(Federation Service): 联邦服务提供将各种类型的数据聚合的能力,它既支持关系型数据,也支持象XML数据、文本数据和内容数据等非关系型数据。同时,所有的数据仍然在自己本身的方式管理。
- 复制服务(Replication Service):复制服务提供远程数据的本地访问能力,它通过自动的实时复制和数据转换,在本地维护一个数据源的副本。本地数据和数据源在技术实现上可以是独立的。
- 转换服务(Transformation Service):转换服务用于数据源格式到目标格式的转换,可以是批量的,或者是基于记录的。
- 搜索服务(Search Service):提供对企业数据的查询和检索服务,既支持数据库等结构化数据,也支持象PDF等非结构化数据。
流程整合- 流程服务。企业部门内部的IT系统通过将业务活动自动化来提高业务活动的效率。但是这些部门的业务活动并不是独立的,而是和其他部门的活动彼此关联的。勿容置疑,将彼此关联的业务活动组成自动化流程可以进一步提高业务活动的效率。业务流程集成正是在这一背景下诞生的。
以服务为中心的企业集成通过流程服务来完成业务流程集成。在业务流程集成中,粒度的业务逻辑被组合成业务流程。流程服务提供自动执行这些业务流程的能力。在参考架构中,流程服务包括如下内容:
- 编排服务(Choreography Service): 编排服务通过预定义的流程逻辑控制流程中业务活动的执行,并帮助业务流程从错误中恢复。
- 事务服务(Transaction Service):事务服务用于保证流程执行中的事务特性(ACID)。对于短流程,通常采用传统的两阶段提交技术,对于长流程,一般采用补偿的方法。
- 人工服务(Staff Service):人工服务用于将人工的活动集成到流程中,一方面它通过关联的交互服务使得人工可以参与到流程执行中,另一方面它需要管理由于人工参与带来的管理任务如:任务分派,授权和监管等。
用户访问整合 - 交互服务。将适当的信息,在适当的时间,传递给适当的人是一直是信息技术追求的目标。用户访问集成是实现这一目标的重要一环,它负责将信息系统中的信息传递给客户,不管它在那里,它以什么样的设备接入。
以服务为中心的企业集成通过交互服务来实现用户访问集成。参考架构中的交互服务包括如下类型:
- 交付服务(Delivery Service): 交付服务提供运行时的交互框架,它通过各种技术支持同样的交互逻辑可以在多种方式(图形界面、语音和普及计算消息)和设备(桌面、PDA、无线终端等)上运行,比如通过页面聚合和标签翻译使得同一个Portlet可以在桌面浏览器和PDA浏览器上展现。
- 体验服务(Experience Service): 通过用户为中心的服务增强用户体验, 其中的技术包括:个性化、协作、单点登录等。
- 资源服务(Resource Service): 提供运行时交互组件的管理,如安全配置、界面皮肤等。
企业集成涉及面很广,不仅需要开发新的应用并使其成为可以被用于企业集成的功能组件,而且需要将被包装的已有的应用和数据用于集成;不仅有企业内部的集成,而且需要和企业外部的系统集成;不仅有交互集成和数据集成,还有功能和应用集成。考虑到这其中的每部分在技术上都会涉及到各种平台和中间件,企业集成的技术复杂性是普通应用开发不可比拟的。这种技术复杂性需要更强有力的开发工具支持。企业集成的开发工具需要有标准的工具框架,这些工具能够以即插即用方式支持来自多家厂商的开发工具。同时,企业集成的开发工具需要支持整个软件开发周期,以提高开发过程中各种角色的生产力。
在以服务为中心的企业集成中,除了需要支持整个软件开发周期和标准的工具框架以外,开发服务需要提供和服务开发相关的技术:
- 用于支持以服务为中心的企业集成方法学和建模,如SODA和IBM的SOMA(Service Oriented Modeling and Architecture)
- 用于服务为中心的编程模型,如WSDL, BPEL4WS,SCA和SDO等
开发环境和工具中为不同开发者的角色提供的功能被称为开发服务。根据开发过程中开发者角色和职责的不同,有如下四类服务:
- 建模服务(Model Service):用于构建可视化的业务流程模型
- 设计服务(Design Service):根据业务模型,进一步分解为服务组件;设计服务用于设计和开发这些服务组件。
- 实现服务(Implementation Serivice):用于将设计和开发的服务组件部署到生产环境中
- 测试服务(Test Service):支持服务组件的单元测试和系统的集成测试
一方面,以服务为中心的企业集成通过各种集成提高信息流转速度,从而提高生产效率。另一方面,以服务为中心的企业集成也为业务创新和优化提供了支持平台-业务创新和优化服务。
业务创新和优化服务以业务性能管理(BPM)技术为核心提供业务事件发布、收集和关键业务指标监控能力。具体而言,业务创新和优化服务由以下服务组成:
- 公共事件框架服务(Common Event Infrastructure Service):通过一个公共事件框架提供IT和业务事件的激发、存储和分类等。
- 采集服务(Collection Service):通过基于策略的过滤和相关性分析检测感兴趣的服务。
- 监控服务(Monitoring Service):通过事件与监控上下文间的映射,计算和管理业务流程的关键性能指标(KPI)
业务创新和优化服务与开发服务是紧密相关联的。在建模阶段被确定的业务流程的关键性能指标被转为特别的事件标志被构建到业务流程中,建模过程中的业务流程也被转换为用于监控服务的监控上下文。在业务流程执行过程中,这些事件标志激发的事件被公共事件框架服务截获,经过采集服务的过滤被传递给监控服务用于计算关键性能指标。关键性能指标作为重要的数据被用于重构或优化业务流程。这种迭代的方法使得业务流程处于不断的优化中。
为业务流程和服务提供安全、高效和健康的运行环境也是以服务为中心的企业集成重要的部分,它由IT服务管理来完成。IT服务管理包括如下两部分:
安全和目录服务(Security and Directory Service):企业范围的用户、认证和授权管理,如单点登录(SSO);系统管理和虚拟化服务(System Management and Virtualization Service):用于管理服务器,存储、网络和其他IT资源。
IT服务管理中相当一部分服务是面向软硬件管理的,而另外一部分服务,特别是安全和目录服务,以及操作系统和中间件管理,会通过企业服务总线和其他服务集成在一起,用于实现业务流程和服务的非功能性需求,如性能、可用性和安全性等。
下面的表格列出乐SOI架构元素中的技术标准,和IBM的产品如何支持这些架构元素。
表 1:SOI架构元素中的技术标准以及支持架构元素的IBM的产品企业集成首先是一个战略性的活动,在我们的经验中,有很多的企业将重点放在集成技术上,这导致了很多失败的案例。作为一个战略性的活动,企业集成首先要从全局出发,制定整个企业集成的策略。这种策略包括业务目标,集成路线图,技术规范,和对开发管理提出的新要求。
企业集成的目的是为了整合 IT 资源,形成一个灵活的 IT 基础设施,来满足业务随需应变的要求。所以要充分考虑业务面的压力和痛点,未来发展和转型对 IT 带来的新需求,以确定集成的战略目标。在环境发生变化时,要随业务面的调整作必要的修改。在我们的观察中,企业 IT 组织往往由于缺乏高级业务管理人员的参与,而无法制定与业务对齐的集成战略,失去企业集成赖以成功的最重要的基础。
在制定集成的战略目标后,要根据目标的优先级,考察当前 IT 环境,确定集成远景,分析差距,定义集成路线图。考察当前可得到的技术、产品、相关技能和服务的可获得状况,定义高层技术规范,包括集成方法、参考架构、技术和产品的选择标准、所遵循的业界标准等等。然后结合人力、物力和资金的投入情况,导出项目群。在我们的观察中,很多企业为了应付业务需求,匆忙上马,缺乏统一规划,导致企业 IT 架构越来越混乱,不能适应业务的变化而日渐被动。
由于集成是一个企业范围内的活动,一个集成项目往往影响若干个部门,其结果也由多个部门所共享使用,所以需要企业级的协调机制。这要求企业调整其已有的 IT 管理(IT Governance)机制,要有一个角色来协调集成项目,并被授权,利用 IT 开发管理的过程,保证相应集成规范得到执行。
另外值得注意的是关于成熟度的考虑,不同企业有不同的成熟度,包括业务本身、IT 系统、IT 组织自身在技能和管理方面,它们的成熟度,对企业集成的成功与否,也都有很大的影响。对成熟度的考察,会帮助我们制定更稳健、实际的集成策略。
服务建模(Service Modeling)是 SOI 活动中至关重要的活动。它包括如何找到和确定服务,如何处理服务的粒度,如何通过服务体现和实现业务目标,如何详细说明服务,如何确定服务与已有系统的关系等。在我们的实践中,这对很多 IT 组织机构都是一个难题,可以考虑一些专业公司的培训,如 IBM SOA 设计中心基于丰富的实践所提供的各种服务。
-
以服务为中心的企业整合1、2部分
2011-02-12 11:06:38以服务为中心的企业整合——理论知识 引言 本文讨论企业整合(集成)的新发展...作者讨论了 SOI 解决方案所涉及的要素,和这些要素相关的技术、标准以及IBM的产品支持,最后作为总结将它们包括在 IBM 的集成参考...以服务为中心的企业整合——理论知识
本文讨论企业整合(集成)的新发展:以服务为中心的集成(Service-Oriented Integration,简称 SOI)。 您将了解到什么是 SOI,推动 SOI 发展的因素以及SOI 带来的价值。作者讨论了 SOI 解决方案所涉及的要素,和这些要素相关的技术、标准以及IBM的产品支持,最后作为总结将它们包括在 IBM 的集成参考架构中,指出如何实现各种集成需求。本文还讨论了在企业集成实践中需要重点注意的事情,如战略规划和IT管理。
引用自IBM developer works 地址: http://www.ibm.com/developerworks/cn/webservices/ws-soi1/#ibm-pcon
以服务为中心的企业整合——案例分析
本文是“以服务为中心的企业整合”系列文章第二部分。在本文的姊妹篇"以服务为中心的企业整合——理论知识"中,我们探讨了以服务为中心的企业集成的理论知识,本文以一个经过简化的实际案例为例,介绍了以服务为中心的企业集成的基本步骤,从业务分析,到服务建模,到架构设计,到系统开发的整个生命周期。以服务为中心的企业集成涉及到的主要技术被穿插在各个步骤中进行了详细的讲解。
引用自IBM developer works 地址:http://www.ibm.com/developerworks/cn/webservices/ws-soi2/#ibm-pcon
-
我的小说之旅
2018-08-08 17:00:17什么是小说? 小说,以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。 人物、情节、环境是小说的三要素。情节一般包括开端、发展、高潮、结局四部分,有的包括序幕、尾声。... -
arcgis工具
2012-10-22 22:37:31这种方法选择某一图层上的要素,其中心点落在另一图层要素中。 完全在…内(Are completely within) 这种方法选择完全落在另一图层多边形内部的某一图层上的要素,例如,选择林区里面的湖泊。通过指定一个缓冲... -
两个年月日怎么相减_会议记录应该怎么记?看这里
2020-12-23 18:52:10】一、会议记录是什么?会议记录是将一场线上或者线下的会议的核心内容、基本信息、议程、结果等以文字、表格、图片等形式记录下来的信息合集。好的会议记录具有尊重事实、高度清晰、总结推进的特点。无论参加会议... -
区块链赋能传媒业,传说还是现实?
2019-04-03 02:18:562019年被大家称为区块链技术的落地元年,这个脱胎于比特币的底层技术...在区块链网络中,一个事件的基本信息包括作者、标题、基本要素、内容信息和其他一些需要收录的 数据将自动被记录、识别和管理,并随着事件的更... -
管理人员的组织和资源的使用
2014-05-20 15:20:07什么是管理管理的基本概念?管理是社会组织活动的协调,以达到预期的目标,人类中心。 ①妥善管理:管理的概念,至少包括四个方面的这种全面的意义对于任何社会组织。该组织的管理的第一要素,因为它只需要... -
arcgis10.1正式版下载加完美破解
2012-08-14 19:20:54ArcGIS Desktop 10.1的十大改进,包括发布、动态图例、索引型标注、Goedatabase管理器、新的制图综合工具、增强对KML的支持、GPX转要素、地理标记照片转点、编辑追踪和搜索坐标系。 【大家自行百度】 1) 搜索功能 ... -
2009年全国物流师统考试题
2011-11-20 00:31:0710.供应链的基本要素包括供应商、销售商和生产企业。 11.保税区内的商品如要进入所在国的国内市场,则要交纳进口税。 12.国际运输具有路线长、环节多、涉及面广、风险性大、时间性强等特点。 13.在物流... -
分别为江南副中心、下沙副中心、临平副中心、大江东副中心、城西科创城市副中心、城北副中心、富阳副中心。 1 城北副中心 **区域:**以勾庄一带为核心,由运河新城、北部新城核心区组成,辐射良渚组团、瓶窑组团 ...
-
盛世桃源网络存储系统 v.2010.5.1.rar
2019-08-30 01:07:23总之,这一切均可以自定义,通过自定义这些要素,无论您在那个行业,您内部是什么结构,您喜欢如何描述您的用户或文件,您想如何控制系统特性或权限,您都可以自行定义,从而轻松地获得一套非常适合您应用的系统,这... -
北风客户关系管理源码 CRM
2013-01-16 14:16:11这个项目所涉及的知识点包括SSH三大框架,同时也介绍了其他常用的框架,如Jquery、Jfreechart等,在介绍了新技术点的同时重点让大家了解了CRM的业务知识,TBC(技术+业务+沟通)是优秀程序员必不可少三要素。... -
软件工程-理论与实践(许家珆)习题答案
2011-01-12 00:49:42软件工程三要素是(C D)。 A) 技术、方法和工具 B) 方法、工具和过程 C) 方法、对象和类 D) 过程、模型、方法 3. 包含风险分析的软件工程模型是(A)。 A) 螺旋模型 B) 瀑布模型 C) 增量模型 D) 喷泉... -
城市副中心包括五角场等9个主城副中心、5个新城中心和金山滨海地区、崇明城桥地区2个核心镇中心等,发展面向长三角和市域的综合服务中心,兼顾全球城市部分核心功能。地区中心和社区中心主要承担所在区域的公共服务...
-
精通qt4编程(源代码)
2010-03-17 19:10:40\中级篇 第6章 2D绘图 蔡志明本章内容较多,包括Qt的绘图要素、图形变换与坐标系统、绘图设备、图像处理、图像打印等。最后讲解了Qt 4图形系统的模型视图框架——Graphics View框架。 152 \ 第7章 拖放操作与剪贴板 ... -
数据库系统概论第四版答案
2011-10-24 18:22:19据的程序为中心转向围绕共享的数据库为中心的新阶段。 6 .数据库管理系统的主要功能有哪些? 答: ( l )数据库定义功能; ( 2 )数据存取功能; ( 3 )数据库运行管理; ( 4 )数据库的建立和维护功能。 7 .试述... -
AXURE RP 6原型设计精髓=AXURE RP 6 RPOTOTYPING ESSENTIALS
2014-08-03 15:36:41当初是什么吸引了我,并使我至今仍为之兴奋?是Axure的功能。我不需要程序员,也不需要花费数月来学习一门编程语言。拥有了Axure,就能让我自由地进行迭代设计和测试,还可以塑造完美的可点击的交互原型。Axure简单... -
数据库系统概论(第四版)学习指导与习题解答-王珊.
2011-10-24 18:21:32数据库系统的出现使信息系统从以加工数据的程序为中心转向围绕共享的数据库为中心的新阶段。 6 .数据库管理系统的主要功能有哪些? 答: ( l )数据库定义功能; ( 2 )数据存取功能; ( 3 )数据库运行管理; ... -
大学文献检索资料 DOC
2009-11-28 10:35:242.构成文献的三要素:知识内容、物质载体、记录手段。 3.文献的基本功能:存储知识信息、传播知识信息。 4. 科技文献的特点: 形式多、文种多。数量多、增长快。交叉重复。失效快、寿命短。 5.科技文献的类型: 1:... -
Google Chrome 6.0.451.0 Dev 版(一个由Google公司开发的网页浏览器)
2010-06-30 15:20:40Web Developer扩展包,您可以访问其他的开发者工具,例如验证选项,页面尺寸调整和CSS要素浏览器:所有功能都可以从工具栏中一个额外的按钮进入。 Chrome Editor是您不能错过的。它可以让您在浏览器中轻松编码,... -
陕西省公共体育场馆开放利用现状影响因素的调查与分析
2010-12-03 00:11:01未有偿开放场馆认为影响其场馆利用最主要的原因主要是缺乏经营人才,中选率是100.0%,其次是场馆质量状况太差,无开放条件,占50%在公共体育场馆的开放利用中,人力资源是很重要的因素,在经营的六大要素中,第一...