微服务架构
架构师波波
做时间的朋友
展开
-
如何解决微服务的数据聚合Join问题?
单库Join问题有后端开发经验的同学应该了解,对于传统SQL数据库,我们通常以正规化(normalization)的方式来建模数据。正规化的好处是数据冗余少,不足之处是数据聚合Join会比较麻烦。实际Join的时候,需要将几张相关表,通过主键和外键关系才能Join起来。我们知道,Join是一种开销比较大的SQL运算,当数据量少的时候,这种开销通常OK。但是随着企业规模逐渐变大,数据库中的数据量也会越变越大,相应地,Join的开销也会越来越大。于是,Join变慢的问题就会越来越突出,通常表现为用户的查询慢原创 2020-09-09 22:03:19 · 3879 阅读 · 0 评论 -
最小可用架构
前言最小可用架构Minimum Viable Architecture是一种架构原则,也可以说是一套架构方法论。它指出在一家互联网公司的生命周期过程中,通常会经历哪几个阶段。对于处在不同阶段的公司应该采用什么样的架构和技术,它也给出了指导建议。最小可用架构这个方法论,是由前eBay首席架构师RandyShoup[参考附录1]所提出。波波在RandyShoup的演讲视频和PPT[参考附录2/3]的基础上,根据自己的经验和理解,对这个方法论做出了进一步的阐释。三家公司的架构演进亿贝、携程和拍拍贷,是我原创 2020-09-09 22:04:53 · 1289 阅读 · 0 评论 -
如何解决微服务的数据一致性分发问题?
介绍系统架构微服务化以后,根据微服务独立数据源的思想,每个微服务一般具有各自独立的数据源,但是不同微服务之间难免需要通过数据分发来共享一些数据,这个就是微服务的数据分发问题。Netflix/Airbnb等一线互联网公司的实践[参考附录1/2/3]表明,数据一致性分发能力,是构建松散耦合、可扩展和高性能的微服务架构的基础。本文解释分布式微服务中的数据一致性分发问题,应用场景,并给出常见的解决方法。本文主要面向互联网分布式系统架构师和研发经理。为啥要分发数据?场景?我们还是要从具体业务场景出发,为啥要原创 2020-07-02 17:56:24 · 3020 阅读 · 0 评论 -
四个架构设计案例及其思维方式
一、介绍架构的本质是管理复杂性,抽象、分层、分治和演化思维是我们工程师/架构师应对和管理复杂性的四种最基本武器。在上一篇架构之道~四种核心架构思维中,我先介绍了抽象、分层、分治和演化这四种应对复杂性的基本武器。在本篇《架构之道~四个架构设计案例及其思维方式》中,我会通过四个案例,讲解如何综合运用这些武器,分别对小型系统,中型系统,基础架构,甚至是组织技术体系进行架构和设计。二、小型系统案例~...原创 2019-02-11 12:45:51 · 8562 阅读 · 0 评论 -
微服务配置组件变色龙Archaius
介绍如果我们要设计开发一套微服务基础架构,大家觉得哪个组件是最基础的?基于多年互联网分布式系统的实战经验,我的回答是配置中心以及配套的客户端。之前我在极客时间上的课程《微服务架构和实践160讲》中,已经深度剖析了携程开源的Apollo配置中心,Apollo是自带客户端的,它的客户端不错很灵活,但是实际上Netflix也开源了一个叫变色龙Archaius的配置中心客户端,而且Archaius可以...原创 2019-02-11 12:50:28 · 3706 阅读 · 2 评论 -
Zuul网关路由管理实践
介绍网关的核心功能之一是路由转发,为此,网关需要获取并维护一张路由表,这个路由表简单可以理解为一个服务名<>服务地址的映射表,有了这张路由表,网关就可以根据请求路径或者HTTP头中的服务信息,将请求转发到对应的目标服务地址。Zuul[附录1]是Netflix开源的微服务网关,在Netflix经过大规模生产级验证,最新的数据表明Netflix每天有近千亿级流量要经过Zuul网关。另外...原创 2019-02-11 12:57:33 · 1500 阅读 · 0 评论 -
Zuul网关生产部署实践
介绍Zuul是Netflix开源的微服务网关,在Netflix经过大规模生产验证,在业界很多公司有落地案例。本文介绍Zuul网关的一些生产部署实践。Zuul参考部署架构上图是一个可供参考的Zuul部署架构,总体可以简化为一个三层架构:第一层、负载均衡LBZuul网关本身无状态,以集群方式部署,它的前端需要负载均衡LB支持。在AWS云中,经常使用ELB作为负载均衡器,这个也是Netfl...原创 2019-02-11 13:05:17 · 3836 阅读 · 1 评论 -
Zuul1和Zuul2该如何选择?
介绍在今年5月中,Netflix终于开源了它的支持异步调用模式的Zuul网关2.0版本,真可谓千呼万唤始出来。从Netflix的官方博文[附录1]中,我们获得的信息也比较令人振奋:The Cloud Gateway team at Netflix runs and operates more than 80 clusters of Zuul 2, sending traffic to abo...原创 2019-02-11 13:10:34 · 10223 阅读 · 5 评论 -
调用链监控产品该如何选择?
本文回顾分布式调用链监控(Distributed Tracing)产品的演进史,介绍近年出现的OpenTracing标准,对主流的开源产品进行比较,并给出选型建议。一、演进史2012年初,我作为携程框架研发部架构师,主导研发了携程第一代的分布式调用链监控产品CTrace,当时在国内算是比较早的引入调用链监控的一个案例。之后我一直对分布式调用链监控这个技术领域比较关注,下图是我近期总结的该领域的...原创 2019-02-12 11:26:39 · 1437 阅读 · 0 评论 -
一个中国式微服务架构模拟案例
介绍我和极客时间合作的课程《微服务架构和实践160讲》已经于2018年底完成,最后一个模块是综合案例分析,通过一个简单的模拟业务案例,将之前课程的各个组件集成起来,包括:统一授权认证中心Gravitee OAuth2集中配置Apollo基础服务Zuul/Eureka/Ribbon/Hystrix监控反馈CAT/Prometheus这些组件既包括Spring Cloud技术栈的部分组...原创 2019-02-19 10:24:11 · 2033 阅读 · 0 评论 -
我为啥暂不看好ServiceMesh?
前言过去的2018年,ServiceMesh(服务网格)概念在社区里头非常火,有人提出2018年是ServiceMesh年,还有人提出ServiceMesh是下一代的微服务架构基础。作为架构师,如果你现在还不了解ServiceMesh的话,是否感觉有点落伍了?那么到底什么是ServiceMesh?它诞生的背景是什么?它解决什么问题?企业是否适合引入ServiceMesh?根据近年在一线互联网企...原创 2019-02-14 13:05:52 · 991 阅读 · 0 评论 -
构建微服务技术中台,SpringCloud和Kubernetes该如何选型?
前言中台架构一词最近在技术圈内比较火,波波基于自己的经验和视角,也来凑个热闹聊聊什么是中台架构。中台架构实际由若干个层次组成,其中微服务技术中台是构建中台架构的重要组成部分。SpringCloud和Kubernetes,是目前互联网企业构建微服务技术中台所采用的主流技术栈,波波也会分析和比对这两个方案。Kubernetes平台封装了构建微服务技术中台所需的关键基础服务,它是波波推荐的,构建微服务...原创 2019-08-18 17:17:40 · 8838 阅读 · 1 评论 -
携程Apollo配置中心的架构
一、介绍Apollo(阿波罗)[参考附录1]是携程框架部研发并开源的一款生产级的配置中心产品,它能够集中管理应用在不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。Apollo目前在国内开发者社区比较热,在Github上有超过5k颗星,在国内众多互联网公司有落地案例,可以说Apollo是目前配置中心产品领域Number1的产...原创 2019-02-11 12:40:38 · 2023 阅读 · 0 评论 -
SoundCloud微服务架构是如何分层的?
介绍在前一篇BFF和网关是如何演化出来的文章中,我向大家解释了BFF和网关是什么,在微服务架构体系中各承担什么职责,以及它们是如何演化出来的。在上一篇Netflix的微服务是如何分层的一文中,我以Netflix公司为案例,分析了Netflix的微服务分层架构的组织方式和近期演进。本文继续以SoundCloud公司为案例,通过一系列架构视图,展示SoundCloud微服务架构的分层组织方式。如果...原创 2019-02-11 12:23:33 · 1997 阅读 · 0 评论 -
波波的架构理念
背景近期我会陆陆续续把我之前在infoq/聊聊架构等媒体上发表的文章,陆续搬到我的CSDN博客上,这个是第一篇。这篇有特殊的意义,2015年下半年的时候,我还没有养成定期总结梳理的习惯,是极客邦的郭蕾鼓励我尝试。今天回头看,这个投资有很大价值,这一路积累了不少东西,后面需要持续积累,将价值和影响力进一步扩大化。我之前的背景主要是做互联网框架、中间件和平台架构,之前工作过的公司eBay、携程、...原创 2019-02-11 10:41:16 · 6560 阅读 · 0 评论 -
架构师必须知道的架构设计原则
一、前言如果一个技术已经存在3年,比如现在很火的前端技术react和vue等,那么我能预估这个技术大致还有3年的生命期,再久就不确定了;如果一个架构或设计原则已经存在15年,例如单一职责和依赖倒置原则,我可以预期它还有15年甚至更久的生命期。原则是比具体技术更抽象,更接近事物本质,也更经得起时间考验的东西。这些原则沉淀在架构师的脑海中,最终内化成他的mindset,以潜意识方式影响和指导他的架构...原创 2019-02-11 11:01:05 · 2138 阅读 · 1 评论 -
聊聊Netflix的技术创新
前言昨天晚上和同事一起吃晚饭,期间聊到Netflix技术那些大胆的创新,事后觉得有必要总结一下,给团队分享,让大家了解世界顶级的技术组织在技术、架构、组织和文化方面的创新。让大家在埋头干活的时候,偶尔也可以抬头看看天(大处着眼,小处着手)。于是就有了这篇文章。注意,Netflix技术本身也在快速的迭代进化中,本文主要基于Netflix在slideshare上的分享总结而成,其中的很多内容目前可...原创 2019-02-11 11:12:11 · 5146 阅读 · 1 评论 -
波波的技术选型哲学
一、前言技术选型是一个很热门的话题,最近我看到自己的微信朋友圈有好几篇关于技术选型的文章,读者对这类主题的热情很高。在技术组织内部,技术人员经常会面临技术选型问题,有时候,技术选型还常常牵扯好几波干系人,相互之间还会产生争议,有的甚至还可能发展到派系斗争的地步。即便像我自己,已经有十几年研发和架构经验的老司机,不管是工作还是业余,有很大部分时间的思考都是深陷在A技术和B技术的利弊权衡之中,不能自...原创 2019-02-11 11:23:57 · 894 阅读 · 1 评论 -
中国式微服务技术栈2.0
前言近年,Spring Cloud俨然已经成为微服务开发的主流技术栈,在国内开发者社区非常火爆。我近年一直在一线互联网公司(携程,拍拍贷等)开展微服务架构实践,根据我个人的一线实践经验和我平时对Spring Cloud的调研,我认为Spring Cloud技术栈中的有些组件离生产级开发尚有一定距离。,比方说Spring Cloud Config和Spring Cloud Sleuth都是Pivo...原创 2019-02-11 11:29:39 · 933 阅读 · 1 评论 -
微服务发布模式
一、前言根据2017年的DevOps发展报告,高效能组织和低效能组织在软件交付的效率上有数量级上的差异。技术组织的软件交付能力是一种综合能力,涉及众多环节,其中发布是尤为重要的环节。作为技术人员,大家可能听说过“滚动发布”和“蓝绿发布”等术语,但是很多人并不清楚这些术语背后的原理。本文试图总结当前主流的发布策略,每个的优劣,适用性,让开发人员特别是架构师对现代发布技术有一个更为清晰全面的认识,...原创 2019-02-11 11:39:24 · 1876 阅读 · 1 评论 -
四种核心架构思维
一、介绍架构的本质是管理复杂性,抽象、分层、分治和演化思维是我们工程师/架构师应对和管理复杂性的四种最基本武器。最近团队来了一些新人,有些有一定工作经验,是以高级工程师/架构师身份进来的,但我发现他们大部分人思维偏应用和细节,抽象能力弱。所以作为团队技术培训的一部分,我整理了这篇文章,希望对他们树立正确的架构设计思维有帮助。我认为,对思维习惯和思考能力的培养,其重要性远远大于对实际技术工具的掌...原创 2019-02-11 11:56:35 · 22739 阅读 · 5 评论 -
微服务2.0技术栈选型手册
一、前言2014年可以认为是微服务1.0的元年,当年有几个标志性事件,一是Martin Fowler在其博客上发表了“Microservices”一文,正式提出微服务架构风格;二是Netflix微服务架构经过多年大规模生产验证,最终抽象落地形成一整套开源的微服务基础组件,统称NetflixOSS,Netflix的成功经验开始被业界认可并推崇;三是Pivotal将NetflixOSS开源微服务组件...原创 2019-02-11 12:02:24 · 710 阅读 · 0 评论 -
BFF和网关是如何演化出来的?
介绍BFF(Backend for Frontend)和网关Gateway是微服务架构中的两个重要概念,这两个概念相对比较新,有些开发人员甚至是架构师都不甚理解。本文用假想的公司案例+图示的方式,解释BFF和网关是什么,它们是怎么演化出来的。希望对架构师设计和落地微服务架构有所启发。服务化架构V1我们先把时间推回到大致2011年左右。假设有一家有一定业务体量的电商公司CoolShop,在这...原创 2019-02-11 12:06:45 · 4500 阅读 · 0 评论 -
微服务为什么要配置中心?
一、介绍在系统架构中,和安全、日志、监控等非功能需求一样,配置管理也是一种非功能需求。配置中心是整个微服务基础架构体系中的一个组件,如下图,它的功能看上去并不起眼,无非就是简单配置的管理和存取,但它是整个微服务架构中不可或缺的一环。另外,配置中心如果真得用好了,它还能推动技术组织持续交付和DevOps文化转型。本文介绍在分布式微服务环境下,应用配置管理背后的业务需求,配置的各种分类和一些高级...原创 2019-02-11 12:15:15 · 1910 阅读 · 0 评论 -
Netflix微服务架构是如何分层的?
介绍在之前一篇BFF和网关是如何演化出来的文章中,我向大家解释了BFF和网关Gateway是什么,在微服务架构体系中各承担什么职责,以及它们是如何演化出来的。在本文和后续一篇文章中,我会分析Netflix(本文)和SoundCloud(下一篇)两家公司的微服务分层架构,帮助大家更深入理解BFF和网关Gateway在分布式微服务架构中的地位和作用,以及前沿互联网公司的微服务架构是如何分层组织的。...原创 2019-02-11 12:19:48 · 2045 阅读 · 1 评论 -
构建OAuth2服务器~Golang语言实现
前言自从我和极客时间合作的课程《微服务架构和实践160讲》上线以来,陆续收到一些学员的反馈,包括:Spring Cloud OAuth2复杂难以理解OAuth2的四个流程到底是如何实现的?课程缺乏项目架构设计和实战开发案例波波老师实践中是如何做架构设计的?基于学员的上述反馈和疑问,同时考虑到OAuth2是微服务架构的重要环节,我决定带领大家分析一个轻量级OAuth2服务器(项目名...原创 2019-02-15 10:34:40 · 3005 阅读 · 1 评论