互联网服务器端开发技术课件 【ch06】互联网架构_第1页
互联网服务器端开发技术课件 【ch06】互联网架构_第2页
互联网服务器端开发技术课件 【ch06】互联网架构_第3页
互联网服务器端开发技术课件 【ch06】互联网架构_第4页
互联网服务器端开发技术课件 【ch06】互联网架构_第5页
已阅读5页,还剩50页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

互联网服务器端开发技术互联网架构第六章iuap数字化技术丛书01RedisRedis01Redis(REmoteDIctionaryServer)是一个开源的使用ANSIC语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型的Key-Value数据库,可提供多种语言的API.它的值可以是字符串(String)、哈希(Hash)、列表(List)、集合(Sets)和有序集合(Sortedsets)等类型,因此,通常被称为数据结构服务器。Redis01一、业务需求业务缓存的实现方式可以将数据放置在JVM的堆内存中,也可以放置在第三方中间件中,如MemCached、Redis。其中JVM内存缓存有两个弊端:①大小受到JVM堆内存的限制,会引起频繁GC(垃圾回收);②集群部署时,因Web应用间存在多份缓存,导致无法共享。尽管第三方缓存中间件解决了JVM内存的这两个问题,但需要建立统一的连接并维护连接池,同时为了不绑定在某个特定的中间件上,还需要对多种中间件进行适配,这些都需要平台提供标准组件来进行处理。Redis01二、解决方案Redis在数据结构、持久化、过期策略、分布式集群、数据备份和灾难恢复等方面相对缓存中间件更有优势。iuap缓存组件还实现了对连接池的管理,支持Redis以主从方式或分片方式进行部署iuap缓存组件还实现了对连接池的管理,支持Redis以主从方式或分片方式进行部署。在功能上,支持Redis对缓存的读/写操作及过期时间的设置;支持复杂类型数据的操作;

支持Redis主从和分片集群的不同配置;支持Redis的密码授权访问;支持Redis连接池配置管理;支持阿里云Redis数据库适配。Redis01三、整体设计环境采用Maven进行编译和打包发布,依赖Jedis2.6.0版本和iuap平台的一些基础组件,如iuap-log,其对外提供的依赖方式如下:其中${iuap.modules.version}为平台在Maven私服上发布的组件version。Redis01三、整体设计Redis中间件通常是配合哨兵进行集群部署,一主多从的部署结构和连接的示意,如图6-1所示。Redis01四、使用说明1.组件包说明iuap-cache组件利用jedis客户端,在springside提供的对jedis封装的基础上,提供使用简易URL的方式创建连接池、兼容直连和哨兵方式连接,其模板类支持Redis的分片。Redis01四、使用说明2.组件配置(1)在属性文件中,配置Redis的连接URL。根据业务不同的需要,可以配置成单机方式、集群方式、分片方式等单机方式示例代码如下:集群方式示例代码如下:分片方式示例代码如下:Redis01四、使用说明2.组件配置(2)Spring的配置文件中,声明iuap-cache中的Bean代码如下:Redis01四、使用说明2.组件配置(3)工程中引入对iuap-cache组件的依赖代码如下:其中${iuap.modules.version}为在pom.xml中定义的引用iuap-cache版本。Redis01四、使用说明2.组件配置(4)代码中调用组件提供的API,操作分布式缓存代码如下:Redis01四、使用说明2.组件配置(5)更多API操作和配置方式,请参考缓存对应的示例工程。开发工具包DevTool中携带了对分布式缓存组件的示例工程,位于DevTool/examples/example_iuap_cache下,在iuapStudio中导入已有的Maven工程,可以将示例工程导入到工作区。Redis01五、开发步骤参考上述配置项,配置属性文件中的Redis连接串,引入缓存对应的Spring配置文件applicationContext-cache.xml,如果是Web应用,则修改web.xml如下:Redis01六、常用接口常用接口的说明如表6-1所示。Redis01六、常用接口常用接口的说明如表6-1所示。Redis01七、Rediscluster方式使用Redis3.0版后可支持redis-cluster方式,组件依赖Jedis2.9.0版采用Maven技术进行编译和打包。Redis支持cluster的特性有自动发现集群中的其他节点,集群容错,集群管理;基于配置(nodes-port.conf)的集群管理;Hotresharding在线分片;ASK转向/MOVED转向机制。架构细节上所有的Redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。节点的faild功能在集群中超过半数的节点检测失效时生效。Redis01八、Redis集成Spring方法级缓存Redis集成Spring方法级的缓存需求。(1)配置文件中添加代码如下:Redis01八、Redis集成Spring方法级缓存Redis集成Spring方法级的缓存需求。(2)在需要写入缓存的方法上加入注解cacheService.java,注解说明如下:其中value表示缓存的名称,必须在spring配置文件中定义。02ZooKeeperZooKeeper02ZooKeeper是一个开放的分布式应用程序,可为分布式应用提供一致性服务,包括配置维护、域名服务、分布式同步、组服务等。一、定义ZooKeeper021.ZooKeeper的架构如图6-4所示为ZooKeeper的“客户端——服务器架构二、ZooKeeper基础ZooKeeper02对ZooKeeper架构的组件进行说明,如表6-2所示。二、ZooKeeper基础ZooKeeper022.层次命名空间如图6-5所示用于内存表示的ZooKeeper文件系统的树结构。二、ZooKeeper基础ZooKeeper02二、ZooKeeper基础2.层次命名空间ZooKeeper节点称为znode,每个znode由一个名称标识,并用路径(/)序列分隔。首先有一个由“/”分隔的znode,在根目录下有两个逻辑命名空间config和workers。config命名空间用于集中式配置管理;workers命名空间用于命名。在config命名空间下,每个znode最多可存储1MB的数据。这与UNIX文件系统相类似,除了父znode也可以存储数据。这种结构的主要目的是进行存储同步数据,并描述znode的元数据,此结构称为ZooKeeper数据模型。ZooKeeper02二、ZooKeeper基础3.Sessions(会话)ZooKeeper中会话的操作十分重要,其请求按先入先出顺序执行。一旦客户端连接到服务器,将立即建立会话并向客户端分配会话ID。客户端以特定的时间间隔发送数据,以保持会话的有效性。如果ZooKeeper集合在超过服务器开启时指定的时间上(会话超时)都没有从客户端接收到数据,则会判定客户端死机。会话通常以毫秒为单位。当会话结束时,在该会话期间创建的临时节点也会被删除。ZooKeeper02二、ZooKeeper基础4.Watches(监视)监视可以使客户端收到关于ZooKeeper集合中的更改通知。客户端可以在读取特定节点时设置监视。监视可向注册的客户端发送任何节点(客户端注册表)已更改的通知。znode更改是与znode相关的数据的修改或znode的子项中的更改。只触发一次Watches。如果客户端想要再次通知,则必须通过另一个读取操作来完成。当连接会话过期时,客户端将与服务器断开连接,相关的Watches也将被删除。ZooKeeper02三、ZooKeeper工作流ZooKeeper集合启动后等待客户端连接。客户端将连接到ZooKeeper集合中的一个节点,它可以是leader或follower节点。一旦客户端被连接,节点将向特定客户端分配会话ID并向客户端在ZooKeeper集合中存储数据,将znode路径和数据发送到服务器,服务器将该请求转发给leaderznode,然后leader将向所有的follower重新发出写入请求;如果大部分节点成功响应,证明写入请求成功,则成功返回代码,并将被发送到客户端。否则写入请求失败。绝大多数节点被称为Quorum。ZooKeeper02三、ZooKeeper工作流ZooKeeper集合中的节点拥有不同数量的节点的效果。单节点效果:指当单个节点发生故障时,ZooKeeper集合会发生“单点故障”,所以不建议在生产环境中使用。双节点效果:表示存在两个节点,当其中一个节点有故障时,则集合会发生故障。因为判断时由于要占多数,而两个中的一个不属于多数,因此也不建议使用。三节点效果:若有三个节点而一个节点有故障,就可以区分出多数。因此,ZooKeeper:集合在实际生产环境中必须至少要有三个节点,如有四个节点其中两个节点故障,将会再次故障。ZooKeeper02三、ZooKeeper工作流如图6-6所示为ZooKeeper工作流。ZooKeeper02三、ZooKeeper工作流ZooKeeper组件表的说明如表6-3所示。ZooKeeper02四、ZooKeeperleader选举leader选举的过程如下:所有创建的节点具有相同路径/app/leader_electio/guid_的顺序临时节点,ZooKeeper集合会附加10位序列号到路径上,创建的znode节点的路径为/app/leader_elect/guid000000000对于给定的实例,在znode中创建最小数字的节点成为leader,而所有其他节点是follower;每个follower节点都会监视下一个具有最小数字的znode,如创建znode/app/leader__elect/guid_000000008的节点,则路径尾部序列号为000000008的节点将监视节点znode/app/leader_elect/guid_000000007。ZooKeeper02四、ZooKeeperleader选举以此类推,创建路径为znode/app/leader_elect/guid000000007的节点,其序列号为00000007的节点将监视zmnode/app/leader_elect/guid_00000006。如果leader关闭,其相应的znode/app/leader_electN就会被删除。下一个在线的follower节点将通过监视器获得关于leader移除的通知,并检查是否存在其他具有最小数字序列号的znode。如果没有,则将承担leader的角色,否则,找到的具有最小序列号的znode的节点将其作为新leader。因此,所有其他follower节点都将挑选具有最小序列号的znode的节点作为leader。ZooKeeper02五、ZooKeeperCLIZooKeeperCLI操作:打开ZooKeeper服务器,然后打开ZooKeeper客户端(“bin/zkCli.sh”)。一旦客户端启动,就可以执行相应操作,如创建znode、获取数据、监视znode.的变化、设置数据、创建znode的子节点、列出znode的子节点、检查状态,以及移除或删除znode。创建znodes:用给定的路径创建一个znode。其中flag参数指定创建的znode是临时的、持久的,还是顺序的。默认情况下,所有znode都是持久的;当会话过期或客户端断开连接时,临时节点(flag:-e)将被自动删除;顺序节点保证znode路径是唯一的,ZooKeeper集合将向znode路径填充10位序列号。ZooKeeper02五、ZooKeeperCLI创建顺序节点,添加flag:-s,语法:create-s/path/data,示例代码如下:输出代码如下:ZooKeeper02五、ZooKeeperCLI获取数据:通过返回znode的关联数据和指定znode的元数据获得信息,如上次修改数据的时间、修改的位置,以及数据的相关信息。此CLI还用于分配监视器以显示数据相关的通知。语法:get/path,示例代码如下:ZooKeeper02五、ZooKeeperCLIWatch(监视):当指定的znode或znode的子数据更改时,监视器会显示通知,并通过get命令设置监视。语法:get/path[watch]1,示例代码如下:移除znode:移除指定的znode并递归其所有子节点,只有在znode可用的情况下才会发生。语法:rmr/path,示例代码如下:ZooKeeper02六、ZooKeeperAPIZooKeeper可提高API绑定Java和C的效率。使用ZooKeeperAPI应用程序可以高效连接、交互、操作数据和协调,最终断开与ZooKeeper集合的连接。该过程以简单和安全的方式获得ZooKeeper集合的所有功能,并提供同步和异步方法。与ZooKeeper集合进行交互的应用程序称为ZooKeeper客户端或简称客户端。znode是ZooKeeper集合的核心组件,ZooKeeperAPI提供了一组方法,使用ZooKeeper集合来操纵znode的所有细节。ZooKeeper02七、ZooKeeper应用程序ZooKeeper为分布式环境提供灵活协调的基础框架。ZooKeeper在Hadoop中的作用非常重要,当Hadoop集群桥接多个商品服务器时,就需要协调和命名服务。ApacheHBase是一个开源的分布式非关系型数据库,用于大型数据集的实时读/写访问,并在Hadoop分布式文件系统上运行,HBase遵循主从架构控制所有从机,从机称为区域服务器。ApacheSolr是一个用Java编写的、快速的、容错的分布式搜索引擎,Solr有两个不同的部分,即索引和搜索。03QuartzQuartz03一、业务需求应用程序中经常有定时任务的需求,如定时垃圾回收、任务调度、每隔多长时间重复执行、一个任务在不同时间段执行等。Quartz是一个完全由Java编写的开源作业调度框架,为Java应用程序中作业调度提供了简单却强大的机制。Quartz03二、解决方案任务调度是基于Quartz开发的,它能依据事件间隔来调度任务,并按照cron表达式(一种时间维度的表达方式)来操作。iuapdispatch-sdk是任务调度客户端SDK组件,该组件可通过客户端接口调用服务端的添加、删除、暂停、启动定时任务等功能。Quartz在功能上提供独立的任务调度服务、支持定时任务执行、支持重复任务执行,以及提供任务的新增、删除、暂停接口。Quartz03三、依赖环境组件依赖Quartz框架,并采用Maven进行编译和打包发布,对外提供的依赖方式如下:其中,${iuap.modules.version}是平台在Maven私服上发布的组件版本。Quartz03四、组件包说明iuap-dispatch-sdk是任务调度客户端SDK组件,该组件可通过客户端接口调用服务端的添加、删除、暂停、启动定时任务等功能。配置监听Servlet功能,在任务调度客户端的配置文件web.xml中,配置监听任务调度客户端SDK提供的Servlet类地址,用于执行回调任务,其中dispatch-client.properties表示配置文件字段说明;dispatch.send.type表示任务发送方式,默认HTTP,同时支持SOCKET.dispatch.server.http.url表示服务器地址。dispatch.recall.type表示任务默认回调方式,默认HTTP,同时支持SOCKET.dispatch.recall.http.url表示任务回调地址。Quartz03五、工程样例(1)新建任务处理类,需要实现ITask接口,其代码如下:Quartz03五、工程样例(2)新增任务的代码如下:Quartz03六、开发步骤(1)加入依赖,其代码如下:(2)客户端的配置文件web.xml中,需要配置任务调度客户端SDK提供的Servlet类地址,用于执行回调任务,其中dispatch.send.type表示任务发送方式,默认为HTTP,同时支持SOCKET传输。(3)编写任务代码,该类需要实现ITask接口。(4)添加任务,使用SDK提供的DispatchRemoteManager类的add方法添加任务。04登录及权限组件概述登录及权限组件概述04一、业务需求业务系统在使用时要进行访问控制,仅当以系统内的用户身份登录系统时,才能访问系统内的相关功能或资源,并且不同的用户能访问的功能也不同,需要根据用户的权限进行控制,由此就引入了登录认证和权限控制的要求。登录及权限组件概述04二、功能说明本认证组件基于ApacheShiro,使用shiro安全框架来管理登录及权限信息。登录组件支持多种身份标识。该组件还支持多个域,从域中可得到用户相应的角色或权限,以验证用户是否能进行操作(鉴权),提供会话管理和安全管理。权限框架提供了用户、角色、功能、数据权限、用户角色关联、角色权限关联模型,以及维护API等功能等权限,同时提供认证、授权、加密、会话管理,以及与Web集成、缓存等功能。登录及权限组件概述04三、整体设计依赖环境组件采用Maven进行编译和打包发布,其对外提供的依赖方式如下:其中,${iuap.modules.version}为平台在Maven私服.上发布的组件的ve

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论