Python、Java、大数据、人工智能分享

登峰造极境!JD高级架构师沉淀3年,在线分享架构修炼之道

2020-09-11  本文已影响0人  Java领域指导者

写在前面

大多的系统,上到复杂的分布式集群,下到功能简单一些的微服务,乃至all in one的系统,除了业务逻辑,我们80%以上的精力都在考虑系统的健壮性、扩展性和解决系统中的异常情况。

然而在实际工作学习中,经常听到工作了两三年的开发同学说,自己除了基本的CURD什么都不会,对于系统如何去设计和迭代完全没有概念。你是否也有相同的疑惑?

针对上述情况,小编在这里为大家推荐这篇由京东技术专家撰写的关于架构和系统的编程之道,相信阅读完本文,能够让那些刚刚踏入开发领域的同学眼前一亮,看到除CURD外更应该关注的系统架构和编程之道。能够快速从编写业务代码进阶到更高的阶段。

请注意,为了不影响大家的阅读体验,小编只是截取了章节目录和部分主要内容,让大家能有一个整体概览的情况下,又保证了阅读体验。有想要深度学习了解的朋友,请留言文末。

目录简介

第1章:网关之道

我们需要一个网关,实现微服务之后需要一个统- -的出入口来“统领”众多的微服务的接口。开放网关更是如此,它需要把企业组织的能力以API的形式对外赋能。这样网关便有了两个突出的特点,-是访问量大,二是依赖系统多,那么网关系统的稳定性和深度治理就显得尤为重要,读者可以结合容错之道一章的知识来应对这两个特点给网关系统带来的风险。本章从认识API网关开始,一直介绍到传统网关系统有几种“死”法,进而又介绍了全异步网关。本章对搭建网关的核心技术如泛化、管道、异步、缓存等都做了重点叙述,希望读者在搭建网关系统的时候可以作为参照。

第2章:开放之道

企业体量达到一定量级就会考虑对外开放的业务方向,这个量包含两个方面,一方面是访问量,另一方面是数据量。如果自己独享,那么业务的发展就会受到一定程度的约束,如果对外开放,将这个量下的业务和数据以API的形式开放给第三方,则会带来更大的业务发展,与第三方开发者共建一个开放的业务生态,形成API经济,带来更多的收益,达到双赢乃至多赢的目标。搭建开放平台要以开放网关为基础,提供沙箱环境,同时还需要做好开放安全的建设,开放和安全历来都是-对矛盾体,这一点需要企业认真去平衡。

第3章:分布式之道

分布式系统的架构思想由来已久,互联网企业的系统架构一定是符合分布式的设计思想的。本章着重讲述了集群与分布式的区别、分布式系统下的事务、限流、锁,以及衡量一个系统的QPS、TPS 等指标,另外还介绍了如何利用好这些指标。

第4章:MQ之道

消息中间件是互联网企业的必备基础组件之一,它可以给应用系统之间带来时间解耦、空间解耦。本章从认识JMS开始,逐步介绍了MQ的各种概念与原理,同时还详细叙述了MQ的各种功能场景的使用。单独一节介绍了MQ在数据异构中的作用,最后我们又回到概念与原理层面,思考了为什么需要消息过滤、消息重试的注意点、消息为什么没有了顺序等我们平时使用过程中容易忽略的一些知识。

第5章:消息推送之道

消息推送是一种很经济的触达用户的通道或方式,无论APP应用,还是PC应用,企业的业务信息有时候是促销信息或公告之类的信息,它们都可以通过消息推送的方式送达用户。本章介绍了两种实现消息推送的技术,一种是基于HTTP的方式,另一种是基于Netty的TCP方式,读者可以拿来借鉴与参考。在实现消息推送后,我们还要关注服务器的性能,从最大支撑的连接数,到所使用的线程资源,都是需要我们考虑的。我们还介绍了弱网络的产生,以及与APNs的通信和实现方式。

第6章:RPC之道

一套成熟的RPC框架在企业的整体系统架构中担负着中流砥柱的职责,无论我们做分布式系统,还是实现微服务化,都不能缺少对RPC的使用。本章我们首先认识RPC,然后介绍RPC实现的基础原理,随后又思考了一次RPC的时间都耗费在哪些阶段,最后还介绍了异步RPC的知识。我们已经知道类似网关这样的纯I/O型的应用,采取异步RPC调用会提高系统的性能。

但目前大部分业务调用关系场景下还是采取同步调用RPC的居多,局部场景下我们仍然需要考虑是否可以采取异步的方式来实现更好的效果。

第7章:I/O之道

I/O复用模型是同步非阻塞,这里的非阻塞是指I/O读写,对应的是recvfrom操作,因为数据报文已经准备好,不需要阻塞。说它是同步,是因为一次请求的执行是在一个线程里面。有时还会说它是阻塞的,实际上是指阻塞在Select 上面,必须等待读就绪、写就绪等网络事件。前面我们也了解了I/O复用是多路复用,这里的多路是指多连接,每一个连接对应一个Channel,或者说多路就是多个Channel。复用是指多个连接复用了一个线程或少量线程。

第8章:微服务之道

在本章中我们讲述微服务的知识并没有从“术”的维度去展开,比如Spring Cloud这样的实现框架,而是结合笔者自己的两个实践,一个是微服务后如何做一次系统拆分, 另一个是如何朝着微服务的方向去做一次数据库拆分。在日常工作中除了开发新的系统,大多数情况下我们是要治理线上的生产系统,这些系统如何去微服务化呢?如果已经微服务化的如何做一次系统梳理来发现未知的问题呢?读者可以结合这两个案例分别从应用层和数据库层方面去思考。

第9章:容错之道

线上系统运行最重要的两个要素,一是要运行稳定,二是不能让局部影响全部。我们在工作中都是本着不去犯错的态度去建设线上系统的,但残酷的现实已经一次又一次地证明,线上问题是无法杜绝的。比如早些年Netflix 公司的线上系统的事件,以及近几年各大厂频繁暴露出来的系统问题。因此我们要把很大一部分精力放到系统容错上面,也就是不允许局部问题影响整体。比如前面提到的一个系统中对某个外部依赖出了问题导致整个系统拒绝请求服务,这就是非常可怕的故障,而且一旦发生就是灾难性事故。本章介绍的这些容错措施可以有效地防止此类局部影响全部的事故的发生。

第10章:程序之外

结合自己的真实感受讲述健身锻炼跟程序之间的感悟,以及程序员的硬件装备等内容。

一线大牛评价

本书是一本实践性非常强的书籍,所有内容均是作者多年实战经验的总结,从亿级网关,再到亿级分布式系统架构,干货满满,无论你是互联网从业新手还是老司机,相信你都能从书中学到很多东西——京东7FRESH交易研发负责人李飚

架构修炼之道,重在修炼,作者将自己这些年在京东架构实践的修炼经历汇聚成此书,亿级系统架构的种种关键技术思考与实战尽在其中,得道之路并不轻松,参考前行者的修炼历程,期望你能修得自己的技术架构之道——《大型网站技术架构:核心原理与案例分析》作者李智慧

总结

本书的主书名叫作“架构修炼之道”,当提到“道”的时候,我们通常会想起孔子、孟子,或者想起国外一些“大神”写的技术书籍,因此使用该书名可谓十分大胆。但实际想来,“实践是检验真理的唯一 标准”,本书中的“道”,就是被检验过的真理、道理,是最普通、最真实的道理。本书还有一个副标题,“亿级网关、平台开放、分布式、微服务、容错等核心技术修炼实践”,书中对于这些技术的描述都是我在工作过程中通过反复实践得到的总结和感悟。同时,工作中我们敬畏每一行代码,敬畏每一次线上生产事故,每次大促备战我们都怀着一颗敬畏之心,这些年来在京东的架构实践无疑就是一场修炼。

本书中所阐述的“道”均是互联网架构实践过程中总结出来的道理,有些道理甚至是付出了惨痛的线上事故代价换来的。我们如何将一个承载亿级调用量的网关系统设计得高效且稳定,如何将一个平台合理化地开放达到多边共赢,如何熟练地驾驭分布式系统设计,如何更深入地了解MQ的使用场景,如何搭建一个成熟的消息推送系统,以及RPC、IO通信、微服务思想的实践落地,这些知识在本书中都有详尽的阐述,相信你翻一翻本书的目录就能找到你感兴趣的知识点,比如多路复用、Tomcat的NIO、数据异构、系统容错方法等,这些内容是我们每一位架构师和软件开发人员在突破自己能力瓶颈的过程中所需要具备的潜力技能。

好了,喜欢文章的朋友请多多点赞评论转发,关注小编,有对这篇京东大佬编纂的《架构修炼之道》感兴趣的朋友,请关注小编,并私信回复【学习】即可~~~

上一篇下一篇

猜你喜欢

热点阅读