大型网站系统与Java中间件实践 第4章 服务框架

原创 2016年08月31日 16:06:21

为什么需要服务化

数据库连接数带来的压力
应用复杂臃肿,还有一些代码冗余,影响开发效率

前期的解决方案: 把应用拆小,但是数据库的压力还在,一些公用的代码还是可能存在冗余,当前也可以使用共享库的方式解决,应用起来不太方便。

服务化能够解决哪些问题

系统架构更加清晰
专门的团队负责自己的服务,提高代码质量,由于核心相对稳定,修改和发布的次数会减少,也会提供稳定性
更加底层的资源统一由服务层管理,结构更加清晰,利于提高效率。

服务化需要解决哪些问题

服务可能是多层的,服务之间也可能相互调用在,这就需要服务治理。

如何实施服务化

寻址

名称服务
规则服务器

序列化

常用的参数

version :加入版本号控制
group : 分组,如果同一个接口的远程服务有很多机器,我们就可以把这些机器规组,这样就可以将不用调用者对于同一个服务的调用进行隔离了。
服务自身部署方式

将服务框架作为应用的一个依赖包,与应用一起打包,这样就是存在问题,如果要升级服务,就要更新应用本身,并且服务框架没办法接管classloader。
服务框架作为容器的一部分

jar包冲突处理

通过Classloader, 使用用户自定义的ClassLoader,将服务框架自身用到的类和应用用到的类都控制在User-Defined Class Loader级别,这样就实现了相互的隔离。
Web容器对多个应用的处理,以及OSGi对于不同Bundle的处理都采用了类似的方式。

运行时版本统一的情况

需要服务框架比应用优先启动,并且把一些需要统一的jar包放到User-Defined Class Loader所公用的祖先ClassLoader中。

通信方式

透明代理
通过服务注册查找中心进行直连

服务的拆分

要拆分的服务是需要为多方提供公共服务的,对于那些比较专用的实现,如果它们是独立部署在远程机器上的,就不需要拿出来做一个服务了,增加系统的复杂度。

服务的粒度

这是很难量化的方面,需要根据业务的实际情况来划分。

优雅与实用的平衡

在做服务化的同时,还需要考虑到实用性,服务化并不是标准,目的就是一个,提高系统的性能。服务化虽然能够是系统的架构更加优雅清晰,但是如果损失了性能就本末倒置了。

分布式环境中的请求合并

Future方式
分布式锁服务
路由策略

在多机环境中,需要由独立于服务调用者、服务提供者之外的节点来完成相关的工作,也就是需要分布式锁服务来控制。需要考虑其性能。

另外一个思路: 根据一定的规则把同样的请求发送到同一个服务提供者上,然后在服务提供者的机器上做单机控制,这样通过路由策略的选择,可以不用引入分布式锁服务,减少了复杂性。

此外,对于比较消耗资源的操作,不论是使用分布式锁服务,还是采用路由方式把请求送到特定机器,在服务调用者上都可以进行单机多线程的控制。

具体采用何种方式,需要根据具体场景来决定,而且需要数据的支持来做最后的决定。

版权声明:本文为博主原创文章,未经博主允许不得转载。

大型网站系统与Java中间件实践读书笔记

1.分布式系统相对集中式而言,是指多台计算机互相通过消息通信进行协作而对外提供服务;可解决大型机的伸缩性和单点等问题; 2.网络i/o有bio/nio,还有aio,aio是指线程拿到消息后并不自己处...
  • ioscodelover
  • ioscodelover
  • 2015年04月14日 21:10
  • 659

《大型网站系统与JAVA中间件实践》【PDF】下载

《大型网站系统与JAVA中间件实践》【PDF】下载链接: https://u253469.pipipan.com/fs/253469-230062557     内容简介 到底是本什么书,拥有这样一...
  • zhiyong499
  • zhiyong499
  • 2017年12月04日 07:47
  • 94

[大型网站系统与Java中间件实践]--分布式服务框架(RPC)

本文涉及到的内容: (1)架构中引入服务框架的概念 (2)服务框架的设计与实现 (3)服务框架在实战中的优化 (4)为服务框架护航的服务治理 其实这一篇博客就是介绍分...
  • u010853261
  • u010853261
  • 2017年02月26日 20:39
  • 931

[大型网站系统与Java中间件实践]--构建Java中间件的基础

本文主要包括以下内容: (1)Java中间件的定义与三大类型 (2)构建Java中间件涉及到的Java基础知识 (3)分布式系统中的Java中间件 本文涉及到的具体知识并不...
  • u010853261
  • u010853261
  • 2017年02月26日 15:34
  • 560

《大型网站系统与Java中间件实践》读书笔记——CAP理论

分布式事务希望在多机环境下可以像单机系统那样做到强一致,这需要付出比较大的代价。而在有些场景下,接收状态并不用时刻保持一致,只要最终一致就行。 CAP理论是Eric Brewer在2000年7月份的P...
  • umgsai
  • umgsai
  • 2017年01月09日 14:08
  • 140

分布式计算,大型网站技术架构:核心原理与案例分析

商业转载请联系作者获得授权,非商业转载请注明出处。 作者:李小翀 链接:https://www.zhihu.com/question/22764869/answer/31277656 来源:知乎...
  • u010725670
  • u010725670
  • 2016年02月03日 20:13
  • 639

大型网站系统与Java中间件实践 第5章 数据访问层

数据库水平/垂直拆分的困难给数据库减压 优化应用 缓存、搜索引擎 数据库拆分...
  • enzoy
  • enzoy
  • 2016年09月01日 13:19
  • 420

大型网站系统与JAVA中间件实践——chapter1-4之服务框架

服务路由 1.负载均衡 服务路由的核心问题就是负载均衡的问题。即机房的部署能力是否对等。 线上服务部署会涉及跨机房的问题,可以通过路由把请求的发起方和接收方控制在同一个机房中。 但是这样做可能...
  • xxcupid
  • xxcupid
  • 2016年11月15日 11:02
  • 257

[大型网站系统与Java中间件实践]--分布式服务框架(RPC)

本文涉及到的内容:  (1)架构中引入服务框架的概念  (2)服务框架的设计与实现  (3)服务框架在实战中的优化  (4)为服务框架护航的服务治理 其实这一篇博客就是介绍分布式服务框架...
  • u013322876
  • u013322876
  • 2017年03月07日 13:57
  • 532

大型网站的HTTPS实践(一)---HTTPS协议和原理

1前言百度已经于近日上线了全站HTTPS的安全搜索,默认会将HTTP请求跳转成HTTPS。本文重点介绍HTTPS协议,并简单介绍部署全站HTTPS的意义。 本文最早发表于[百度运维部官方博客](htt...
  • luocn99
  • luocn99
  • 2015年05月03日 19:16
  • 21017
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:大型网站系统与Java中间件实践 第4章 服务框架
举报原因:
原因补充:

(最多只允许输入30个字)