在本书中可以学到:
■ 使用领域驱动设计方法来设计和实现微服务
■ 使用Spring Security实现微服务的安全性
■ 部署和测试微服务
■ 检测和调试开发过程出现的问题
■ 利用JavaScript的Web应用程序来使用微服务
■ 学习关于微服务的*佳做法和一般原则
微服务是利用云平台开发企业应用程序的新技术,它是小型、轻量和过程驱动的组件。微服务适合设计可扩展、易于维护的应用程序。它可以使开发更容易,还能使资源得到zui佳利用。《Java微服务》帮助你用Java构建供企业使用的微服务架构,内容包括微服务核心概念和框架、大型软件项目的高层次设计、开发环境设置和前期配置、对微服务架构持续集成的部署、实现微服务的安全性、有效地执行测试、微服务设计的zui佳做法和一般原则,以及如何检测和调试问题。
《Java微服务》适合想要了解微服务架构,以及想要深入了解如何有效地实施企业级微服务的Java 开发人员。
译者卢涛:ITPUB社区版主,20年IT从业经历,先后从事c/c++软件开发、系统分析及Oracle数据库等工作,参加过多个全国性普查数据处理项目的开发和运维,目前主要从事统计报表联网填报系统的后台支持。《剑破冰山―oracle开发的艺术》作者之一,译有多部技术书籍。
Sourabh Sharmahas具有十年以上的产品/应用程序开发经验。他的专长是开发、部署和测试多层web应用程序。他喜欢解决复杂的问题,并寻找*佳的解决方案。
在他的职业生涯中,他已成功地为财富500强的客户开发和交付了各种独立应用程序和云应用程序,给他们带来很多收益。
Sourabh还为他的总部设在美国的*尖企业产品公司发起并开发了一种基于微服务的产品。他在大学时代,即20世纪90年代后期,开始编写Java程序,而且至今仍然热爱这项工作。
审阅者简介
Guido Grazioli担任过种类繁多的业务应用程序的开发人员、软件架构师和系统集成人员,他的工作跨越多个领域。他是一位复合型软件工程师,对Java平台和工具,以及Linux系统管理都有深入了解;对SOA、EIP、持续集成和交付,以及在云环境中的服务业务流程尤其感兴趣。
前言XV
1 一种解决方法1
微服务的演变2
整体式架构概述3
整体式架构的局限性与它的微服务解决方案的对比3
一维的可扩展性6
在出故障时回滚版本7
采用新技术时的问题7
与敏捷实践的契合8
减轻开发工作量——可以做得更好9
微服务的构建管道10
使用诸如Docker的容器部署11
容器11
Docker12
Docker的架构13
Docker容器14
部署14
小结14
2 设置开发环境17
Spring Boot配置18
Spring Boot概述18
把Spring Boot添加至REST示例19
添加一个嵌入式Jetty服务器21
示例REST程序22
编写REST控制器类24
@RestController25
@RequestMapping25
@RequestParam25
@PathVariable26
制作一个示例REST可执行应用程序29
设置应用程序构建30
运行Maven工具30
用Java命令执行31
使用Postman Chrome扩展测试REST API31
更多的正向测试场景34
反向的测试场景35
NetBeans IDE安装和设置37
参考资料42
小结42
3 领域驱动设计43
领域驱动设计基本原理44
组成部分45
普遍存在的语言45
多层架构45
表示层46
应用程序层46
领域层46
基础架构层47
领域驱动设计的工件47
实体47
值对象48
服务49
聚合50
存储库52
工厂53
模块54
战略设计和原则55
有界上下文55
持续集成56
上下文映射57
共享内核模式58
客户和供应商模式58
顺从者模式59
反腐层59
独立方法59
开放主机服务60
精馏60
示例领域服务60
实体的实现61
存储库的实现63
服务的实现66
小结67
4 实现微服务69
OTRS概述70
开发和实现微服务71
餐馆微服务72
控制器类73
服务类76
存储库类79
实体类82
预订和用户服务85
注册和发现服务(Eureka服务)85
执行87
测试87
参考资料92
小结92
5 部署和测试93
使用Netflix OSS的微服务架构概述93
负载均衡95
客户端的负载均衡95
服务器端的负载均衡98
电路断路器与监控102
使用Hystrix的回退方法102
监控103
设置Hystrix仪表板105
设置Turbine107
使用容器部署微服务109
安装和配置109
具有4 GB内存的Docker机器110
使用Maven构建Docker映像110
使用 Maven 运行Docker114
使用Docker执行集成测试115
把映像推送到注册表118
管理Docker容器119
参考资料121
小结121
6 实现微服务的安全性123
启用安全套接字层123
身份验证和授权127
OAuth 2.0127
OAuth的用法128
OAuth 2.0规范——简明详细信息128
OAuth 2.0角色129
OAuth 2.0客户端注册131
OAuth 2.0协议端点135
OAuth 2.0授权类型137
使用Spring Security的OAuth实现144
授权码许可150
隐式许可153
资源所有者密码凭据许可154
客户端凭据许可155
参考资料155
小结156
7 利用微服务Web应用程序来使用服务157
AngularJS框架概述157
MVC158
MVVM158
模块158
提供程序和服务160
作用域161
控制器161
过滤器161
指令162
UI-Router162
OTRS 功能的开发163
主页/餐馆列表页163
index.html164
app.js169
restaurants.js172
restaurants.html179
搜索餐馆180
餐馆详细信息与预订选项181
restaurant.html181
登录页面183
login.html184
login.js185
预订确认186
设置web应用程序187
小结201
8 最佳做法和一般原则203
概述和心态203
最佳做法和原则205
Nanoservice(不推荐)、规模和整体性205
持续集成和部署206
系统/端到端测试自动化207
自我监控和记录207
每个微服务都使用独立的数据存储区209
事务边界210
微服务框架和工具210
Netflix开放源码软件(OSS)210
构建——Nebula211
部署和交付——Spinnaker与Aminator211
服务注册和发现——Eureka211
服务沟通——Ribbon212
电路断路器——Hystrix212
边缘(代理)服务器——Zuul212
业务监控——Atlas213
可靠性监控服务——Simian Army213
AWS资源监控——Edda214
主机性能监控——Vector215
分布式配置管理——Archaius215
Apache Mesos调度器——Fenzo215
成本和云利用率——Ice216
其他安全工具——Scumblr和FIDO216
参考资料217
小结218
9 故障排除指南219
日志记录和ELK环境219
简要概述221
Elasticsearch221
Logstash221
Kibana222
ELK环境安装222
安装Elasticsearch223
安装Logstash224
安装Kibana225
服务调用关联ID的使用226
让我们看看怎样解决这个问题226
依赖项和版本227
循环依赖关系及其影响227
设计系统时需要分析它227
维护不同版本227
让我们了解更多228
参考资料228
小结228
微服务(Microservices)架构是软件架构风格的一种。随着云平台的采用,企业应用程序的开发从整体应用程序转移到小型、轻量和过程驱动的组件,这种组件称为微服务。顾名思义,微服务是指小型服务。它们是设计可扩展、易于维护的应用程序的下一个重大事件。它不但使应用程序开发起来更容易,而且还提供了极大的灵活性来以最佳方式利用各种资源。
本书是帮助你构建供企业使用的微服务实现的实践指南。它还解释了领域驱动设计及其在微服务中的采用。它讲述了怎样构建更小型、更轻量、更快速的服务,同时确保其可以很方便地在生产环境中实施。它也讲述了企业应用程序开发从设计与开发,到部署、测试和实现安全性的完整生命周期。
本书包含的内容
第1章,一种解决方法,涉及大型软件项目的高层次设计,在生产环境中所面临的共同问题和解决问题的方法。
第2章,设置开发环境,讲述了如何设置开发环境,包括IDE和其他开发工具,以及不同的库。本章涉及创建基本项目到设置spring引导配置,以建立和发展第一个微服务。
第3章,领域驱动设计,通过引用一个示例项目为其余的章节设定基调。它使用此示例项目来驱动服务或应用程序的不同功能和领域组合来解释领域驱动设计。
第4章,实现微服务,讲述示例项目从设计到实现的过程。本章不仅涉及编码,还涉及微服务的不同方面——构建、单元测试和包装。在本章末尾,将完成一个可用于部署和使用的示例微服务项目。
第5章,部署和测试,讲述了如何采用不同的形式,包括独立部署和使用诸如Docker的容器来部署微服务。本章还将演示如何用Docker把我们的示例项目部署到诸如AWS的云服务上面。你还将掌握使用REST Java客户端和其他工具来测试微服务的知识。
第6章,实现微服务的安全性,解释如何利用身份验证和授权来保证微服务的安全。身份验证将使用基本身份验证和身份验证令牌来讲述。同样,授权将使用Spring Security来解释。本章还将解释常见的安全问题及对策。
第7章,利用微服务Web应用程序来使用服务,解释了如何利用Knockout、Require和 Bootstrap JS库开发web应用程序(UI),构建使用微服务来显示数据的web应用程序的原型和一个小型实用程序项目(示例项目)的流程。
第8章,最佳做法和一般原则,讲述微服务设计的最佳做法和一般原则。本章还提供了有关使用行业做法进行微服务开发的详细信息和范例。本章还包含微服务实现会产生的错误,以及如何才能避免这类问题的几个例子。
第9章,故障排除指南,解释了在微服务及其解决方案的开发过程中会遇到的常见问题。这将帮助你顺利地掌握本书内容,并使学习过程轻松。
学习本书需要具备的条件
为了学习本书,可以使用至少具备2GB内存的安装了任何操作系统(Linux、Windows或Mac)的计算机;还需要NetBeans with Java、Maven、Spring Boot、Spring Cloud、Eureka Server、Docker和CI/CD的应用程序。对于Docker容器,可能需要一个单独的虚拟机或一个云主机,最好拥有16GB或更大的内存。
本书的受众
本书面向熟悉微服务架构,并对核心要素和微服务应用程序有一个合理的知识水平和理解,但现在想要深入了解如何有效地实施企业级微服务的Java开发人员。
版式约定
你会发现,本书采用了大量的文本样式,用以区分不同种类的信息。下面是这些样式和解释它们的含义的一些例子。
正文中的代码、数据库表名称、文件夹名称、文件名、文件扩展名、路径名、虚拟的URL、用户输入和Twitter句柄如下所示:“可以使用下面的实现创建Table实体,并且可以根据自己的需要添加属性”。
代码块的设置,如下所示︰
public class Table extends BaseEntity {
private int capacity;
public Table(String name, BigInteger id, int capacity) {
super(id, name);
this.capacity = capacity;
}
任何命令行输入或输出采用的格式如下:
docker push localhost:5000/sourabhh/restaurant-service:PACKT-SNAPSHOT
docker-compose pull
下载示例代码
从http://www.broadview.com.cn下载所有已购买的博文视点书籍的示例代码文件。
勘误表
虽然我们已经尽力谨慎地确保内容的准确性,但错误仍然存在。如果你发现了书中的错误,包括正文和代码中的错误,请告诉我们,我们会非常感激。这样,你不仅帮助了其他读者,也帮助我们改进后续的出版。如发现任何勘误,可以在博文视点网站相应图书的页面提交勘误信息。一旦你找到的错误被证实,你提交的信息就会被接受,我们的网站也会发布这些勘误信息。你可以随时浏览图书页面,查看已发布的勘误信息。
参与本书翻译的人员有卢涛、李颖、卢林、陈克非、李洪秋、张慧珍、李又及、卢晓瑶、李阳、陈克翠、刘雯、汤有四。
我是一名初涉微服务领域的开发者,面对着海量的技术名词和复杂的架构概念,常常感到无所适从。幸运的是,我偶然发现了《Java微服务》这本书,它如同一盏明灯,为我照亮了前进的道路。《Java微服务》这本书最吸引我的地方在于,它没有直接将我推入复杂的技术海洋,而是从构建微服务最根本的“为什么”和“是什么”开始,循序渐进地引导我理解微服务的核心理念和价值。书中对微服务架构的优势分析,如高内聚、低耦合、独立部署、技术多样性等,让我对它有了初步的认识。随后,它就开始进入实操环节,通过Spring Boot和Spring Cloud这两个强大的框架,详细讲解了如何构建一个完整的微服务系统。我尤其喜欢书中对Spring Cloud组件的讲解,比如Eureka如何实现服务注册与发现,Ribbon如何进行客户端负载均衡,Feign如何简化服务间的调用,Hystrix如何实现服务熔断与降级,这些都通过生动的例子和清晰的代码展示了出来,让我能够跟着一步步地实践,并在实践中加深理解。此外,书中还对API网关、配置中心、分布式事务等微服务开发中不可避免的难题,提供了非常实用的解决方案和技术选型建议,让我不再对这些问题感到束手无策。读完这本书,我感觉自己已经具备了构建一个基础微服务系统的能力,并且对未来的学习方向有了更清晰的规划。
评分作为一名在Java开发领域摸爬滚打了多年的开发者,我曾一度觉得自己的技能栈已经趋于成熟,直到我接触了《Java微服务》这本书。它如同一场及时雨,彻底颠覆了我对于大型系统开发的认知,也为我打开了通往现代分布式系统设计的大门。这本书的内容深度和广度都令我印象深刻。它不仅仅是简单地介绍Spring Cloud的各个组件,而是从微服务架构的本质出发,深入探讨了分布式系统设计中的核心挑战,例如数据一致性、服务间的通信、故障的容错处理、系统的可观测性等等。我尤其喜欢书中对“领域驱动设计”(DDD)在微服务拆分中的应用讲解,这帮助我理解了如何从业务的本质出发,构建出更加健壮和易于维护的微服务边界。在技术实现层面,本书对Spring Cloud生态的讲解可谓是细致入微,从服务注册中心(Eureka/Nacos)的原理到负载均衡(Ribbon/Spring Cloud LoadBalancer)的策略,再到声明式服务调用(Feign)的便捷性,以及熔断器(Hystrix/Sentinel)的关键作用,都有非常生动的阐述和代码示例。书中还对消息队列(Kafka/RabbitMQ)在微服务解耦和异步处理方面的应用进行了深入的剖析,让我看到了构建高吞吐量系统的可行性。更让我感到惊喜的是,本书还触及了DevOps文化在微服务落地中的重要性,以及如何利用Docker和Kubernetes等工具来提升微服务的部署和管理效率,这无疑为我提供了一个更全面的视角。
评分这本《Java微服务》简直是打开了我对现代软件架构新世界的大门!一直以来,我都对单体应用的历史包袱感到窒息,代码耦合、难以维护、扩展性差,每次上线都像一场赌博。当决定踏入微服务这个领域时,说实话,心里是没底的。市面上的资料很多,但往往要么过于理论化,要么只讲皮毛,让我这种实践者感到无从下手。《Java微服务》这本书,从一开始就抓住了我的痛点。它并没有直接抛出复杂的概念,而是循序渐进地讲解了微服务的核心思想、设计原则以及它相对于单体架构的优势。我尤其喜欢它在介绍分布式事务、服务注册与发现、API网关这些关键技术时,不仅仅是罗列了各种框架,而是深入浅出地分析了它们背后的原理和各种解决方案的权衡,比如在选择分布式事务方案时,它详细对比了XA、TCC、Saga等模式的优缺点,以及在不同场景下的适用性,这让我不再是盲目地选择一个框架,而是真正理解了“为什么”和“怎么用”。书中对Spring Cloud系列组件的讲解更是细致入微,从Eureka的服务注册中心到Ribbon的客户端负载均衡,再到Feign的声明式服务调用,每个组件的配置、核心类、工作流程都分析得非常到位。通过书中的示例代码,我能够一步步搭建起自己的微服务项目,并且能够深刻理解服务间的通信机制,以及如何优雅地处理服务故障。这本书的结构安排非常合理,理论联系实际,让我在学习过程中始终保持着一种“学有所用”的成就感。
评分说实话,在读《Java微服务》之前,我对于“微服务”这个词更多的是一种模糊的认知,知道它很流行,但具体怎么落地,怎么从零开始构建一个生产级别的微服务系统,一直让我感到困惑。《Java微服务》这本书,就像一位经验丰富的技术向导,在我迷茫的旅途中点亮了一盏盏明灯。它并没有一开始就堆砌大量的概念和术语,而是从“为什么需要微服务”这个根本问题出发,层层递进地阐述了微服务的核心价值和落地挑战。我最欣赏的地方在于,它不仅仅停留在概念层面,而是将大量的篇幅用于讲解如何实际构建微服务。书中对Spring Cloud生态系统的介绍,可以说是非常全面且深入的。它详细讲解了如何利用Spring Boot快速构建单个微服务,然后是如何通过Spring Cloud的各个组件,如Netflix Eureka(或Nacos)、Ribbon、Feign、Hystrix(或Sentinel)等,将这些独立的微服务串联起来,形成一个完整的服务体系。对于服务间的通信,书中不仅介绍了RESTful API,还深入探讨了消息队列(如Kafka、RabbitMQ)在异步通信和解耦方面的作用。更难得的是,它还触及了微服务治理的方方面面,包括配置中心(Spring Cloud Config或Apollo)、链路追踪(Sleuth与Zipkin)、服务熔断与降级(Hystrix/Sentinel),以及最让人头疼的分布式事务问题,并提供了多种解决方案的比较和落地指导。书中的代码示例清晰易懂,跟着实践,真的能体会到微服务架构带来的灵活性和高可用性。
评分我一直对构建可伸缩、高可用的分布式系统充满好奇,尤其是在经历了几个大型单体应用的维护噩梦后,微服务架构自然成为了我研究的重点。《Java微服务》这本书,在我看来,是一本真正能够引导开发者走向实战的宝藏。它并非一本泛泛而谈的理论书,而是充满了实实在在的技术指导和代码实践。作者在讲解微服务设计的各个方面时,都展现了深厚的功底。我印象最深刻的是关于服务拆分策略的讨论,书中列举了多种拆分维度(按业务领域、按子域等),并分析了每种策略的优劣势,帮助我理解了如何根据实际业务场景做出合理的拆分决策,避免了“为了微服务而微服务”的误区。此外,书中关于服务间通信的详细讲解,无论是同步的RESTful API,还是异步的消息队列,都给予了充分的阐述,并且还对gRPC这种高性能通信框架进行了介绍,让我看到了更多可能性。对于像服务注册与发现、配置管理、熔断降级、限流这些微服务治理的“痛点”,书中都有非常详尽的解决方案介绍,并且重点突出了Spring Cloud系列组件在其中的应用。通过书中提供的示例代码,我能够亲手搭建一个包含多个服务、能够进行服务发现、配置热更新、熔断降级和链路追踪的微服务系统,这种成就感是无法比拟的。这本书让我对微服务有了更系统、更深入的理解,并且掌握了将理论转化为实际代码的能力。
评分今购的东西,不由得精神为之一振,自觉七经八脉为之一畅,与卖家您交流,我只想说,产品实在是太好了,你的高尚情操太让人感动了, 本人对此卖家之仰慕如滔滔江水连绵不绝,海枯石烂,天崩地裂,永不变心。交易成功后,我的心情是久久不能平静, 自古英雄出少年,卖家年纪轻轻,就有经天纬地之才,定国安邦之智,而今,天佑我大中华,沧海桑田5000年,神州平地一声雷,飞沙走石,大雾迷天,朦胧中, 只见顶天立地一金甲天神立于天地间,花见花开,人见人爱,这位英雄手持双斧,二目如电,一斧下去,混沌初开,二斧下去,女娲造人,三斧下去,小生倾倒。 得此大英雄,实乃国之幸也,民之福,人之初也,怎不叫人喜极而泣……看着交易成功,我竟产生出一种无以名之的悲痛感——啊, 这么好的卖家,如果将来我再也遇不到了,那我该怎么办?直到我毫不犹豫地把卖家的店收藏了,我内心的那种激动才逐渐平静下来, 可是我立刻想到这 么好的卖家,倘若别人看不到,那么不是浪费心血吗?经过痛苦的思想斗争,我终于下定决心,牺牲小我,奉献大我。 我要以此评价奉献给世人赏阅,我要给好评……评到所有人都看到为止!
评分我是我们村里第一个买爱疯7plus 手机壳 的人,我们这 里大部分人都是用的小灵通,手机一般都不超过100 块。当听说我买了个手机壳就花了25块之后,整个村 都震惊了,村长跑到我家对我爸说,恁娃是不疯了。媳妇跟我闹离婚, 买这么贵的手机壳,这日子还过不过了。面对着重重压 力,我依然坚持要买,我相信我这一个月工资不会白 花。终于,快递到了,我怀着激动的心情,颤抖着双手打开包裹,那一刹那,感觉我的眼睛都要闪瞎了 啊,这颜色,这纹理,这手感,买嘎等!只恨我读书 少,无法用华丽的词语来形容它。举起手机壳,我骄傲 的站在村口,顿时整个村都沸腾了,大姑娘小媳妇 拼了命的向我涌来,更有人趁我不备的时候想摸我的 手机壳,更有人大喊,我不给她们摸,她们就要跳井。就连村花都红 着脸要跟我回家,看着隔壁老王杀人的目光,才想起 这是他花了一麻袋地瓜 换来的老婆。吓得我赶紧收起手机壳,挤出人群落 荒而逃。为了测试手机壳硬度,我爬上了我们村的最高建筑——高达3米的村长家的平房上。举 着手机往下一扔,顿时金光一闪,手机竟然毫发 无损,天啦撸,天寿啦,这硬度,我想跟传说中一颗 就破产的钻石比也相差不远了吧
评分讲了很多源码,还没看完,继续努力加油看
评分不错的东西,可以购买,推荐
评分看了几章,介绍的都是各个技术要重点掌握的东西,巩固和加强知识点的认识,还是很有用的。
评分好好好好好好好好好好好好好好
评分这本书不错的,就是cloud发展太快了,版本有点老,适合初学者
评分目录编排的比较合理,具体内容待看过以后再评论。
评分质量绝对保证正品哦
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.idnshop.cc All Rights Reserved. 静思书屋 版权所有