【系统分析师之路】系统分析师必知必会(系统设计扩展篇)
系统分析师必知必会 系统设计扩展篇
-
- 【系统分析师之路】系统分析师必知必会(系统设计扩展篇)
- 二十二. EJB(Enterprise Java Bean)
一. Web Services
- 它是一个为了支持跨网络的机器之间相互操作交互而设计的软件系统。
- Web Service服务通常被定义为一组模块化的API,它们可以通过网络进行调用,来执行远程系统的请求服务。
- Web Service=SOAP+HTTP+WSDL;
- SOAP是指简单对象访问协议,它是一种基于XML的消息通信格式,用于在网络上,不同平台不同语言的应用程序之间的通讯。它是WebService消息传送标准。
- WSDL是服务实现,服务接口定义。
二. SOA
1)定义
- 它是一种粗粒度低耦合的体系系统结构模型;
- 不同功能单元通过中立方式定义的接口联系起来;独立于硬件,操作系统和编程语言。构建的服务以统一通用的方式进行交互。
2)SOA涉及到的三种角色
- 服务请求者,服务提供者,服务目录
3)SOA三个抽象级别
- 操作,服务,业务流程
4)三个软件层次
- 基础设计层
OOA和OOD思想,设计开发底层服务构件。 - 应用结构层
采用EA架构,以表示业务服务逻辑构建为中心,集中定义服务之间的接口和服务级的协定。 - 业务组织层
BMP,流程安排与组织。
5)SOA常用的标准与规范
- WSDL,UDDI,SOAP都是SOA基础的基础部件。
- WSDL
用来描述服务。 - UDDI
用来注册和查找服务。一个消费者可以在UDDI注册表中查找服务,取得服务的WSDL描述。然后通过SOAP来调用服务。 - SOAP
作为传输层协议,用来在消费者和服务提供者之间传送消息。它也是WebService的默认机制,其他的技术为可以服务实现其他类型的绑定。
6)SOA的特征
- 可以从企业外部访问
- 随时可用
- 粗粒度的服务接口分级
- 松散耦合
- 可重用的服务
- 服务接口设计管理
- 标准化的服务接口
- 支持各种消息模式
- 精确定义服务契约
7)关键问题
- 发现服务,服务规约,服务实现
8)SOA优势
- SOA是一种可适应的,灵活的体系结构类型,基于SOA构建的系统架构可以在系统的开发和维护中缩短产品上市时间,因此可以降低企业系统开发的成本和风险。
- 当SOA架构师遇到一个十分复杂的企业系统时,首先考虑的应该是如何重用已有已有的投资而不是替换遗留系统。
9)SOA作用
- 它解决的是集成的问题。包括数据集成,应用集成,流程集成等。分两步:
- 一是将业务系统能力分解为独立,自治,离散和可复用的服务;二是对服务进行组装和编排,来满足业务和流程的变化。
- SOA本身就是一个集成平台,本身并不产生能力,本身也不存储和结构化数据,SOA服务目录库能力源自业务系统,业务系统提供能力注册到SOA服务目录库,SOA更多的是能力集成平台,可以将业务系统各个层面能力转化为数据服务,业务服务,流程服务,展现层服务。
- 通过SOA集成这些服务,提供统一的服务目录库,来屏蔽底层业务系统。
三. 面向服务的开发
1)两个视图
- 服务提供者关注服务的实现,封装与发布;
- 服务消费者关注的是服务组合满足需求。
2)面向重用的开发
- 面向服务的开发是对前面已经讨论过的面相过程,面向对象,面向方面等开发方法的补充。
3)面向服务开发的优点
- 重用性
创建可重用用各种业务应用的服务能力。 - 效率
通过组合现有的服务,以快速创建新的服务和业务应用能力,这样就可以集中精力在数据共享,而不是底层实现的能力。 - 与技术的松耦合
独立于服务的执行环境进行服务建模的能力。紧紧盯着服务能够收发的消息,而不需要考虑具体的技术实现。 - 职责的划分
可以令业务人员和技术人员分别关注业务问题和技术问题,双方通过服务契约进行协同。
四. 集群技术
1)集群的定义
- 集群技术是一种较新的技术,通过集成技术可以在付出较低成本的情况下,获得性能可靠性,灵活性方面的相对较高的收益。
- 其中任务调度就是集群系统中的核心技术。
2)集群的特点
- 集群是一组相互独立的,通过网络高速互联的计算机,它们构成了一个组,并以单一系统的模式进行管理。
- 一个客户和集群相互作用的时候,集群像是一个独立的服务器。
- 集群的配置是用来提高可用性和可缩放性的。
3)使用集群的目的
1. 提高性能
- 集群与镜像技术可以采用镜像机制提高系统的可靠性。
- 提高用户的并发访问效率。
2. 降低成本
- 相比升级单台服务器来说,集群这种对外扩展的方式更易节约成本
3. 提高可扩展性
- 如果采用了集群技术,则只需要将新的服务器加入集群就可以了,对于客户来说,服务无论是连续性还是性能上都几乎没有变化。
- 好像系统在不知不觉之中就完成了升级。
4. 增强了可靠性
- 集群技术使得系统在故障发生的时候,仍然可以继续工作,将系统停运的时间减到最小。
五. 负载均衡技术
- 应用层负载均衡:Http重定向,反向代理服务器;
- 传输层负载均衡:DNS域名解析负载均衡,基于NAT的负载均衡;
- 硬件负载均衡:F5;
- 软件负载均衡:LVS,Nginx,HAProxy;
1)基于特定软件的负载均衡
- 也叫做Http重定向,是应用层的负载均衡。访问到某个网页的时候,就给你跳转。
- 将一个客户端重新路由到另一个位置。服务器返回一个重定向响应,而不是返回请求的对象。
- 客户端确认新地址然后重发请求,从而达到负载均衡的目的。
2)反向代理负载均衡
- 通过代理服务器之后访问服务器。它需要一台接口服务器来分发请求(反向代理)从而实现负载均衡。它也是应用层的负载均衡。
3)基于DNS的负载均衡
- 一个域名可以对应10台服务器的时候,在域名解析的时候就可以轮寻10个IP地址来实现分流。
- 它是传输层的负载均衡,分流的时间比其他的负载均衡方式更早。
- 在DNS服务器中为同一个主机名配置多个地址,在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的节点上去,使得不同的客户端访问不同的节点,从而达到负载均衡的目的。
4)基于NAT的负载均衡
- 结构和反向代理都是结构一样的。不一样的地方是NAT是通过端口的映射的硬件方式来实现负载均衡。
- 它也是传输层负载均衡。
5)负载均衡VS高性能主机
1. 可用性
- 采用高性能的主机系统很难实现系统的冗余机制,当发生故障后会导致整个系统会失去响应能力;
2. 可伸缩性
- 采用高性能的主机系统,升级服务器的成本与获得的相应能力不成比例,整个系统的扩展性差;
3. 从应用特点来看
- Internet中的Web应用绝大多数是简单任务,高强度的并发处理
- 而主机系统只是对于复杂单一任务和有限的并发处理具有高性能,不能同时处理大量的并发请求。
6)应用层负载均衡的应用
- 将某个客户端的所有请求转发到相同的服务器,使得一个用户会话的所有请求被同一服务器实例处理,从而保证服务质量。
- 也避免了在会话服务器或缓存服务器,业务服务器和会话或缓存服务器之间可能会反复移动较大量的数据。
六. 虚拟计算
1)虚拟计算的概念
- 是一种以虚拟化,网络,云技术等技术的融合为核心的一种虚拟计算。
- 通过对分布自制资源的集成和综合运用,为终端用户或者应用系统提供安全透明的一体化服务。它的本质就是资源共享。
虚拟化目前已经成为企业IT部署不可或缺的组成部分。
2)包括的内容
- 服务器虚拟化,存储虚拟化,应用虚拟化,桌面虚拟化
3)广义概念
- 广义上来说就是通过映射和抽象的方式,屏蔽物理设备的复杂性,增加一个管理层面,激活一种资源并使之更易于透明控制。
- 它可以有效的简化基础设施的管理,增加IT资源的利用率和能力。比如服务器,网络或存储。
4)服务器虚拟化
- 将服务器的物理资源抽象成逻辑资源,让一台服务器变成几台甚至上百台相互隔离的虚拟服务器,我们不再受限于物理上的界限,而是让CPU,内存,磁盘,IO设备等硬件变成可以动态管理的资源池。
- 从而提高资源利用率,简化系统管理,实现服务器整合,让IT对业务的变化更加有适应力。这就是服务器的虚拟化。
5)存储虚拟化
- 将资源的逻辑映像和物理存储分开,从而为系统和管理员提供一副简化无缝的资源虚拟视图。
- 对用户来说虚拟化的存储资源就相当于一个巨大的存储池,用户不会看到具体的磁盘,磁带,也不必关心自己的数据经过那一条路径通往哪一个具体的存储设备。
6)应用虚拟化
- 它是将应用程序与操作系统解耦合,为应用程序提供了一个虚拟的运行环境。在这个虚拟的运行环境中,不仅包括应用程序的可执行文件,还包括它所需要的运行时环境。
- 应用虚拟化的本质就是把应用对底层的系统和硬件的依赖抽象出来,可以解决版本不兼容的问题。
7)桌面虚拟化
- 它依赖于服务器虚拟化,在数据中心的服务器上进行服务器虚拟化,生成大量的独立的桌面操作系统(虚拟机或者是虚拟桌面)同时根据专有虚拟桌面协议,发送给终端设备。
- 用户终端通过以太网登陆到虚拟主机上,只需要记住用户名和密码及网关信息,即可随时随地的通过网络访问自己的桌面系统,从而实现单机多用户。
七. 微服务
1. 微服务的概念
- 微服务顾名思义,就是很小的服务,所以它属于面向服务架构的一种。
- 通俗一点来说,微服务类似于古代著名的发明,活字印刷术,每个服务都是一个组件,通过编排组合的方式来使用,从而真正做到了独立、解耦、组件化、易维护、可复用、可替换、高可用、最终达到提高交付质量、缩短交付周期的效果。
- 微服务架构是一种新的软件体系设计模式,它并没有形成统一严格的定义,但是基于其分布式环境应用场景,却拥有一些共同的特征。比如开发敏捷性,持续交付,可伸缩性,最终一致性等。
微服务架构建议将大型复杂的单体架构应用划分为一组微小的服务,每个微服务根据其负责的具体业务职责提炼为单一的业务功能;
2. 微服务的特点
- 每个服务可以很容易地部署并发布到生产环境里隔离和独立的进程内部,它可以很容易地扩展和变更。
- 对于一个具体的服务来说可以采用任何适用的语言和工具来快速实现
- 服务之间基于基础设置相互协同工作。
3. 相比于传统服务的优势
1)解决了复杂性问题
- 它把庞大的单一模块应用分解为一系列的服务,同时保持总体功能不变。
- 这个应用被分解为多个可管理的分支或服务。
- 每一个服务都有良好定义的边界,以远程过程调用驱动或信息驱动API的形式,微服务架构模式单一模块代码库,实际很难实现。
- 因此,独立的服务开发速度明显更快,而且更易理解和维护。
2)让每个服务能够独立开发
- 开发者能够自行选择可行的技术让服务来解决API约定。
- 当然大多数组织会通过限制技术选择来避免完全的失控,然而这种自由意味着开发者们不用被迫使用从项目开始就存在的陈旧技术,他们可以选择使用当下的技术编写一个新的服务。
- 另外由于这些服务本身相对比较小,用新的技术来重写旧的服务也更可行一些。
3)每个微服务都能独立配置
- 开发者不必协调对于本地服务配置上的变化,这种变化一旦测试完成就被配置了。
- 微服务的架构模式使不断的配置成为可能。
4)让每个服务都可以独立调整
- 你可以给每个服务配置正好满足容量和可用性限制的实例数
- 另外你也可以使用最适合服务的资源需求的硬件。