架构探险:从零开始写分布式服务框架

架构探险:从零开始写分布式服务框架 下载 mobi epub pdf 电子书 2024


简体网页||繁体网页
李业兵 著



点击这里下载
    


想要找书就要到 图书大百科
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

发表于2024-11-26

类似图书 点击查看全场最低价

图书介绍

出版社: 电子工业出版社
ISBN:9787121319594
版次:1
商品编码:12127885
品牌:Broadview
包装:平装
开本:16开
出版时间:2017-07-01
用纸:胶版纸
页数:400


相关图书





图书描述

产品特色

编辑推荐

★一个长期战斗在一线的美团-大众点评技术专家

★详细讲述了分布式服务框架的底层实现细节

★清楚梳理了分布式服务框架周边的知识点

★从零开始构建了一个分布式服务框架

★实战操练的代码透漏出作者身经百战的深厚功力

★技术原理和内部实现分析提升技术理解和洞察力

★目前企业真正使用微服务非常少,而使用分布式服务框架比较多,实现相对简单,作者所在公司美团在分布式服务框架实现方面具有丰富的经验。

★《架构探险:从零开始写分布式服务框架》能顺利地带领你走出架构险境,让你对分布式服务框架所涉及的技术了然于胸,并能合理地利用这些技术,搭建符合自身需求的分布式服务框架。


内容简介

  《架构探险:从零开始写分布式服务框架》的初衷是希望把分布式服务框架的实现细节及分布式服务框架周边的知识点梳理清楚,为那些对分布式服务框架感兴趣的人打开一扇窗户,降低获取相关知识的门槛。所以《架构探险:从零开始写分布式服务框架》围绕实现分布式服务框架所需的知识点,进行了比较详尽细致的介绍。包括常见的RPC框架、常见的序列化/反序列化方案及选型、分布式服务框架服务的发布引入实现细节、软负载实现、底层通信方案实现、服务注册与发现实现、服务治理常见的功能等。通过对这些知识点的逐步讲解,层层深入,最终完成一个可运行的分布式服务框架。

  通过《架构探险:从零开始写分布式服务框架》,读者可以完整地了解实现一个分布式服务框架的所有技术细节和实现原理,希望对想了解分布式服务框架实现细节的读者有所启发和帮助。


作者简介

  李业兵

  先后在支付宝运营支撑事业部、去哪儿网酒店事业部任职高级开发工程师。于2015年加入猫眼电影(原美团网旗下电影事业部),负责交易业务线架构与开发工作。

  擅长电商交易领域系统设计与架构,在电商交易领域系统架构设计方面积累了较为丰富的实践经验。

  对高并发系统设计、服务化架构、互联网中间件开发保持着浓厚的兴趣。


精彩书评

  随着微服务的流行,支撑微服务的分布式服务框架成为大家优先发展的重点。服务化的基本原理掌握起来相对比较容易,但是要从零构建一个分布式服务框架却比较困难,涉及通信、线程并发、服务调度等。本书详细讲解了构建服务框架所需的各种技术及框架选型,手把手教初学者搭建一套完整的分布式服务框架,如果你想掌握分布式服务框架底层的技术细节,自己开发一套适合本公司和领域的服务框架,本书是一个非常不错的选择!

  ——华为架构师,《分布式服务框架原理与实践》《Netty木又威指南》作者李林锋


  简洁明了的文字把技术介绍得深入浅出,实战操练的代码透漏出作者身经百战的深厚功力,通过本书不仅可以快速全面地了解和上手分布式服务框架开发技术,还能通过技术原理和内部实现的分析介绍,提升我们对技术的理解和洞察力。

  ——猫眼电影技术负责人陈清阳


  基于服务调用相关知识,业界已产出了不少技术书籍。本书汲取各家之精华,不同技术层级的人通过不同的章节都能获得极大的收获。更为难能可贵的是,作者是一个长期战斗在工程一线,一步一步成长起来的美团-大众点评技术专家,设计过大量的工程框架并主导开发实现,经受住了多种复杂业务形态的考验。凭借着作者本人多年的积累,凝聚出了书中丰富的示例和经验总结。通过这些示例和经验总结,内容逐渐深入,全方位揭示了服务间通信的各项技术关键点,能有效地帮助读者从新手成长为专家。

  ——美团点评高级技术专家(原美团点评技术委员会委员)黄波


  本书比较全面地介绍了分布式系统开发的各方面知识,循序渐进,实例代码比较多,非常适合初入分布式开发并且有Java开发经验的人员参考学习。

  ——香格里拉酒店集团副总裁(原去哪儿网高级系统架构师)孙立


  其实我们都在架构中探险,或许自己目前正身陷险境,我们希望得到一本“宝典”,教会自己如何找到架构的成功捷径。李业兵老师写的这本《架构探险:从零开始写分布式服务框架》就能顺利地带领我们走出险境,让我们对分布式服务框架所涉及的技术了然于胸,并能合理地利用这些技术,搭建符合自身需求的分布式服务框架。

  ——特赞科技CTO黄勇·


目录

第1章 常用的RPC框架 1

1.1 RPC框架原理 1

1.2 RMI介绍 2

1.2.1 原生RMI代码示例 3

1.2.2 RMI穿透防火墙 5

1.3 CXF/Axis2介绍 7

1.3.1 CXF介绍 7

1.3.2 Axis2介绍 14

1.4 Thrift介绍 21

1.4.1 Thrift工作原理介绍 23

1.4.2 Thrift IDL语法说明 26

1.4.3 基于Apache Thrift的Java版完整案例 28

1.4.4 基于Java注解的简化实现 36

1.5 gRPC介绍 42

1.5.1 protobuf3语法介绍 43

1.5.2 gRPC使用示例 45

1.6 HTTP Client介绍 53

1.6.1 构建HttpClient对象 54

1.6.2 构建URI对象 55

1.6.3 构建请求对象(HttpGet、HttpPost) 56

1.6.4 HttpClient发起调用及获取调用返回结果 56

1.7 实现自己的RPC框架 61

1.8 RPC框架与分布式服务框架的区别 68

1.9 本章小结 68

第2章 分布式服务框架总体架构与功能 69

2.1 面向服务的体系架构(SOA) 69

2.1.1 面向服务架构范式 69

2.1.2 服务拆分原则 71

2.2 分布式服务框架现实需求 72

2.3 分布式服务框架总体架构及所需的技术概述 72

2.4 本章小结 74

第3章 分布式服务框架序列化与反序列化实现 75

3.1 序列化原理及常用的序列化介绍 75

3.2 Java默认的序列化 77

3.3 XML序列化框架介绍 80

3.4 JSON序列化框架介绍 82

3.5 Hessian序列化框架介绍 87

3.6 protobuf序列化框架介绍 88

3.7 protostuff序列化框架介绍 93

3.8 Thrift序列化框架介绍 98

3.9 Avro序列化框架介绍 100

3.9.1 Avro介绍 100

3.9.2 Avro IDL语言介绍 101

3.9.3 Schema定义介绍 103

3.9.4 Maven配置及使用IDL与Schema自动生成代码 103

3.9.5 Avro序列化/反序列化实现 105

3.10 JBoss Marshalling序列化框架介绍 110

3.11 序列化框架的选型 112

3.12 实现自己的序列化工具引擎 113

3.13 本章小结 118

第4章 实现分布式服务框架服务的发布与引入 119

4.1 Spring Framework框架概述 119

4.1.1 Spring Framework介绍 119

4.1.2 Spring Framework周边生态项目介绍 121

4.2 FactoryBean的秘密 122

4.2.1 FactoryBean的作用及使用场景 123

4.2.2 FactoryBean实现原理及示例说明 124

4.3 Spring框架对于已有RPC框架集成的支持 127

4.3.1 Spring支持集成RPC框架介绍 127

4.3.2 基于RmiProxyFactoryBean 实现RMI与Spring的集成 128

4.3.3 基于HttpInvokerProxyFactoryBean实现HTTP Invoker与Spring的集成 131

4.3.4 基于HessianProxyFactoryBean实现Hessian与Spring的集成 133

4.4 实现自定义服务框架与Spring的集成 136

4.4.1 实现远程服务的发布 136

4.4.2 实现远程服务的引入 144

4.5 在Spring中定制自己的XML标签 150

4.6 本章小结 158

第5章 分布式服务框架注册中心 159

5.1 服务注册中心介绍 159

5.2 ZooKeeper实现服务的注册中心原理 161

5.2.1 ZooKeeper介绍 161

5.2.2 部署ZooKeeper 161

5.2.3 ZkClient使用介绍 164

5.2.4 ZooKeeper实现服务注册中心 173

5.3 集成ZooKeeper实现自己的服务注册与发现 175

5.3.1 服务注册中心服务提供方 175

5.3.2 服务注册中心服务消费方 176

5.3.3 服务注册中心实现 178

5.4 本章小结 189

第6章 分布式服务框架底层通信实现 190

6.1 Java I/O模型及I/O类库的进化 190

6.1.1 Linux下实现的I/O模型 190

6.1.2 Java语言实现的I/O模型 194

6.1.3 Java Classic I/O(Blocking I/O)介绍 194

6.1.4 Java Non-blocking I/O(NIO)介绍 211

6.1.5 NIO2及Asynchronous I/O介绍 233

6.2 Netty使用介绍 255

6.2.1 Netty开发入门 256

6.2.2 Netty粘包/半包问题解决 265

6.3 使用Netty构建服务框架底层通信 320

6.3.1 构建分布式服务框架Netty服务端 320

6.3.2 构建分布式服务框架服务调用端Netty客户端 330

6.4 本章小结 347

第7章 分布式服务框架软负载实现 348

7.1 软负载的实现原理 348

7.2 负载均衡常用算法 349

7.2.1 软负载随机算法实现 349

7.2.2 软负载加权随机算法实现 350

7.2.3 软负载轮询算法实现 351

7.2.4 软负载加权轮询算法实现 352

7.2.5 软负载源地址hash算法实现 354

7.3 实现自己的软负载机制 355

7.4 软负载在分布式服务框架中的应用 357

7.5 本章小结 361

第8章 分布式服务框架服务治理 362

8.1 服务治理介绍 362

8.2 服务治理的简单实现 364

8.2.1 服务分组路由实现 364

8.2.2 简单服务依赖关系分析实现 374

8.2.3 服务调用链路跟踪实现原理 380

8.3 本章小结 380

附录A 如何配置运行本书完成的分布式服务框架 381

精彩书摘

  7.2负载均衡常用算法

  负载均衡常用算法主要有随机、加权随机、轮询、加权轮询、源地址hash等。

  7.2.1软负载随机算法实现

  随机算法原理为:获取服务列表大小范围内的随机数,将该随机数作为列表索引,从服务提供列表中获取服务提供者。

  为负载均衡策略算法定义接口如下:

  publicinterfaceClusterStrategy{

  publicProviderServiceselect(ListproviderServices);

  }

  其中接口方法入参providerServices为服务提供者列表。

  软负载随机算法的实现过程如下。

  importares.remoting.framework.cluster.ClusterStrategy;

  importares.remoting.framework.model.ProviderService;

  importorg.apache.commons.lang3.RandomUtils;

  importjava.util.List;

  publicclassRandomClusterStrategyImplimplementsClusterStrategy{

  @Override

  publicProviderServiceselect(ListproviderServices){

  intMAX_LEN=providerServices.size();

  intindex=RandomUtils.nextInt(0,MAX_LEN-1);

  returnproviderServices.get(index);

  }

  }

  实现原理:获得服务提供者列表大小区间之间的随机数,作为服务提供者列表的索引来获取服务。

  7.2.2软负载加权随机算法实现

  加权随机算法在随机算法的基础上针对权重做了处理。软负载加权随机算法实现代码如下。

  importares.remoting.framework.cluster.ClusterStrategy;

  importares.remoting.framework.model.ProviderService;

  importcom.google.common.collect.Lists;

  importorg.apache.commons.lang3.RandomUtils;

  importjava.util.List;

  publicclassWeightRandomClusterStrategyImplimplementsClusterStrategy{

  @Override

  publicProviderServiceselect(ListproviderServices){

  //存放加权后的服务提供者列表

  ListproviderList=Lists.newArrayList();

  for(ProviderServiceprovider:providerServices){

  intweight=provider.getWeight();

  for(inti=0;i

  providerList.add(provider.copy());

  }

  }

  intMAX_LEN=providerList.size();

  intindex=RandomUtils.nextInt(0,MAX_LEN-1);

  returnproviderList.get(index);

  }

  }

  实现原理:首先根据加权数放大服务提供者列表,比如服务提供者A加权数为3,放大之后变为A,A,A,存放在新的服务提供者列表,然后对新的服务提供者列表应用随机算法。

  7.2.3软负载轮询算法实现

  轮询算法,将服务调用请求按顺序轮流分配到服务提供者后端服务器上,均衡对待每一台服务提供者机器。软负载轮询算法实现代码如下。

  importares.remoting.framework.cluster.ClusterStrategy;

  importares.remoting.framework.model.ProviderService;

  importjava.util.List;

  importjava.util.concurrent.TimeUnit;

  importjava.util.concurrent.locks.Lock;

  importjava.util.concurrent.locks.ReentrantLock;

  publicclassPollingClusterStrategyImplimplementsClusterStrategy{

  //计数器

  privateintindex=0;

  privateLocklock=newReentrantLock();

  @Override

  publicProviderServiceselect(ListproviderServices){

  ProviderServiceservice=null;

  try{

  lock.tryLock(10,TimeUnit.MILLISECONDS);

  //若计数大于服务提供者个数,将计数器归0

  if(index>=providerServices.size()){

  index=0;

  }

  service=providerServices.get(index);

  index++;

  }catch(InterruptedExceptione){

  e.printStackTrace();

  }finally{

  lock.unlock();

  }

  //兜底,保证程序健壮性,若未取到服务,则直接取第1个

  if(service==null){

  service=providerServices.get(0);

  }

  returnservice;

  }

  }

  实现原理:依次按顺序获取服务提供者列表中的数据,并使用计数器记录使用过的数据索引,若数据索引到最后一个数据,则计数器归零,重新开始新的循环。

  ……


前言/序言

  推荐序

  2015年,我写了自己 架构探险:从零开始写分布式服务框架 下载 mobi epub pdf txt 电子书 格式


架构探险:从零开始写分布式服务框架 mobi 下载 pdf 下载 pub 下载 txt 电子书 下载 2024

架构探险:从零开始写分布式服务框架 下载 mobi pdf epub txt 电子书 格式 2024

架构探险:从零开始写分布式服务框架 下载 mobi epub pdf 电子书
想要找书就要到 图书大百科
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

用户评价

评分

一次性买了很多专业书,搞活动价格还是挺实惠的

评分

还没看起来,已经到货了,非常期待呀

评分

这本书内容还是很期待,但是包装太差了,书已经折损了,还有污渍

评分

还没开始看呢,看了再评论吧!

评分

搞活动买的,先屯着,待阅读

评分

618活动买书,感觉还挺便宜吧,好好学习

评分

搞活动买的,还挺划算的,不知道什么时候能把这些书看完。。。

评分

字体印刷的还行,是正版,送来时没有薄膜包装!好书,等待阅读!

评分

东西收到了,京东做活动买的,很划算的。

类似图书 点击查看全场最低价

架构探险:从零开始写分布式服务框架 mobi epub pdf txt 电子书 格式下载 2024


分享链接








相关图书


本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

友情链接

© 2024 book.teaonline.club All Rights Reserved. 图书大百科 版权所有