架构犹如探险,眼界必须超前

来源:互联网 发布:无纸化会议软件定制 编辑:程序博客网 时间:2024/05/22 04:49

                                      架构犹如探险,眼界必须超前

架构犹如探险,踩坑在所难免

技术不能肤浅,眼界必须超前

 

2017年,微服务三岁了。我们一直期盼它能快速长大,希望微服务技术社区能推出更多框架与工具,可以帮助我们更好地落地微服务,并从中获得微服务给我们带来的甜头,但实际情况却让我们感到有些失望。我们至今还在寻找适合自身技术需求的微服务架构,甚至仍然觉得微服务离自己有些距离。


因此我们更多的是在观望,希望看到有成功实践微服务的企业能够将自己的技术分享出来,以供更多的企业来使用,但实际情况仍然让我们感到失望。我们不得不选择Spring Cloud这样的“全家桶”式的微服务框架来实现微服务架构,此时我们就需要基于Spring Boot来开发微服务,Spring Cloud提供的大量基础设施虽然可与Spring Boot进行无缝整合,但这样的架构给微服务的技术选型带来了一定的局限性。此外,Spring Cloud包含了大量的Spring官方所提供的开源项目,目前不同的版本在兼容性方面也存在一些不稳定现象。


我们认为,微服务是一个灵活的技术架构,它不能绑定在特定的技术平台上,微服务不应该存在任何的局限性,同时还要确保有较强的兼容性。比如,虽然我们也使用Spring Boot开发微服务,但也允许使用其他更适合的开发框架或编程语言来实现微服务。再比如,我们目前通过ZooKeeper来实现服务注册,但也能轻松地切换为其他技术选型,对于整个应用程序而言,这些都是无感知的。微服务所提倡的理念就是,用最合适的技术以最高效的方式来解决实际应用中的问题。


经过两年多的实践过程,我们找到了一款能让微服务架构快速且稳定落地的解决方案,并将此方案的核心内容汇集成本书,希望该方案能给微服务世界带一点新的能量。


本书将重点关注微服务基础设施方面,其中大部分内容涉及微服务运维相关技术。全书以实践的角度进行编写,读者首先将学习轻量级微服务架构的全景视图,随后的各个章节将围绕微服务的日志、监控、通信、解耦、测试、配置六大方面进行展开。读者可亲自动手,从零开始搭建轻量级微服务架构,充分享受架构探险的乐趣。


黄勇


活动参与方式:


在文末留言

“架构探险中的那些坑或想读此书的理由”

截止至9月22日23:59

留言前5名的用户

可以获得

《架构探险:轻量级微服务架构(下册)》一书!


TIP:留言区只能放出100条留言,架构君会尽量放出有效和优质的评论。

 



作者介绍


黄勇


现任上海特赞科技CTO,曾任阿里巴巴公司系统架构师。具有丰富的互联网产品架构经验与技术管理经验,擅长敏捷开发模式,推崇“轻量级”系统架构。国内开源软件推动者,Smart开源框架创始人,图书《架构探险:从零开始写Java Web框架》作者。技术大会讲师、培训师、咨询师。热爱技术交流,乐于分享自己的成长经验。


本书讲了什么内容


第1章:轻量级的微服务。


本章将从宏观上描述轻量级微服务架构。首先我们将从架构与架构师开始讲起,简单回顾架构演进的过程与微服务的发展趋势。随后我们将探讨在搭建微服务架构之前需要准备的工作,认识微服务架构的“冰山模型”,介绍切分微服务边界的方法和技巧。最后我们将从部署与运行两个角度来观察微服务架构,并以一幅架构全景图来结束本章。


第2章:微服务日志。


本章将关注点放在微服务日志上。首先我们将从Spring Boot日志框架入手,使应用日志可以输出到Docker容器外部,以便我们可随时查看日志文件。随后我们将学习Docker日志驱动,使日志信息输出到Linux的Syslog中。最后我们将Syslog与ELK技术栈整合,搭建一款微服务的日志中心。


第3章:微服务监控。


本章将视角放在微服务监控方面。首先我们将学习Spring Boot应用程序自带的监控特性,接着将介绍Spring Boot Admin开源监控系统的使用方法。随后我们将集成InfluxDB、cAdvisor、Grafana等开源工具,搭建一款微服务的监控中心。最后我们将学习Zipkin工具的使用方法,将其用于微服务的追踪中心。


第4章:微服务通信。


本章将围绕微服务之间的通信来展开。首先我们将在Spring Boot应用程序中实现基于HTTP的同步调用,同时我们也会对比Spring RestTemplate、OkHttp、Retrofit等工具的使用方法。随后我们将使用gRPC框架实现基于RPC的同步调用,并将gRPC与Spring Boot进行整合。最后我们将亲自动手,搭建一款轻量级分布式RPC框架。


第5章:微服务解耦。


本章将使用消息队列的异步方式来解耦微服务调用问题。首先我们将对比ActiveMQ与RabbitMQ,它们是两款经典的开源消息队列。随后我们将使用RabbitMQ来实现请求应答模式,并通过RabbitMQ来实现RPC同步调用。最后我们将使用Event-Sourcing与MQ相结合,巧妙地解决分布式事务问题。


第6章:微服务测试。


本章将聚焦在微服务测试方面。首先我们将以Spring Boot应用程序为例,分别针对Service层与REST API进行单元测试。随后我们将使用Postman来充当REST API的测试工具,并结合Jenkins与Newman搭建一款REST API的自动化测试框架。最后我们将分别使用Swagger与apiDoc工具来自动生成REST API文档,并比较这两款工具的优缺点。


第7章:微服务配置。


本章将解决微服务的配置参数问题。首先我们将通过一些实例,快速学习Ansible自动化运维工具的使用方法。随后将Ansible作为微服务的配置中心,并将Jenkins与Ansible相结合,可用于优化我们现有的微服务部署框架。最后我们将使用Registrator所提供的自注册特性,实现微服务的平滑升级目标。

 

大牛推荐


随着移动互联网的崛起,Web网关越来越重要,本书从Web网关的视角带领大家学习微服务架构。通过本书可以学习到如何使用Spring Boot与Docker等技术构建Web型微服务架构,值得Web开发人员学习。


—— 张开涛,“开涛的博客”博主,《亿级流量网站架构核心技术》作者

 

SOA 从企业级应用到互联网领域火了很多年,曾经是我招聘架构师的必考题目之一,但 SOA 在大型系统的落地从来都是高难度动作,令许多架构师欲仙欲死。如今又兴起了微服务架构,要把 SOA 进行到底,实现彻底的服务化,从此世间再无系统切分,只有微服务小而美好。那么到底如何实现微服务呢?黄老师这本书教我们轻松上手,一步步把理想变成现实,体现出多年实战派的底蕴,是一本不可多得的武功秘籍。


——史海峰,饿了么北京研发中心总经理

 

微服务架构,虽然诞生时间不长,却已成为软件架构领域讨论的热点。微服务的概念看似简单,但涉及诸多方法论和实践积累,这就是为什么有人说它非常好, 但就是“玩不起”。随着微服务生态系统的日趋完善,微服务架构的讨论也从 API 接口、服务间通信、接口测试、基础设施自动化等,逐渐扩展到了API网关、微服务的注册与发现、Docker 封装与部署、持续交付以及运维体系的优化等多方面。本书结合作者过去多年的实战经验,深入浅出地梳理了微服务构建过程中遇到的诸多挑战,并给出了切实可行的解决方案(如何使用 Spring Boot 构建服务、使用 ZooKeeper 注册服务,如何结合 Docker 封装服务和发布服务等),是一本能帮助读者立刻动手、落地微服务的好书。同时,作者从开发和运维两个角度入手,详细地剖析了微服务实施过程中,如何有效解决“最后一公里”的部署以及运维难题。纵览全书,条理清楚,图文并茂,理论结合实际,是一本非常用心,又注重实操的好书,对企业的微服务架构实施,具有很大的参考意义,相信企业的架构师、软件开发人员、运维人员读完这本书一定会受益匪浅。


——王磊,DevOps教练,《微服务架构与实践》作者