自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (1)
  • 收藏
  • 关注

原创 你的技术成长战略是什么?

1. 前言在波波的微信技术交流群里头,经常有学员问关于技术人该如何学习成长的问题,虽然是微信交流,但我依然可以感受到小伙伴们焦虑的心情。技术人为啥焦虑?恕我直言,说白了是胆识不足格局太小。胆就是胆量,焦虑的人一般对未来的不确定性怀有恐惧。识就是见识,焦虑的人一般看不清楚周围世界,也看不清自己和适合自己的道路。格局也称志向,容易焦虑的人通常视野窄志向小。如果从战略和管理的视角来看,就是对自己和周围世界的认知不足,没有一个清晰和长期的学习成长战略,也没有可执行的阶段性目标计划+严格的执行。因为问此类问题的

2021-01-12 11:07:27 1179

原创 一份硬核计算机科学CS自学计划

一、前言不少学员经常抱怨自己的计算机基本功不行,大学的时候荒废了,既然如此,为啥不考虑为自己制定一个为期3~5年的重学CS目标,然后投入时间精力去实现这个目标呢?具体点,这个目标可以是这样的:重学CS(Computer Science)核心课程,夯实CS基本功,达到美国一流大学CS专业本科毕业水平。如果你的年龄还没有超过30岁,想在IT行业做得长久,想成为一名更优秀的工程师,甚至想往架构师或者技术领导层方向发展,那么波波认为这个目标是值得投入的,长期会有回报。假设你的职业方向是偏向软件工程和系统架构方.

2021-01-10 19:50:37 1894 2

原创 工程师职级胜任力框架

一、前言尽管这些年国内的IT行业发展迅速,但是仍然欠缺一套比较综合性的面向工程师的职级胜任力框架,造成国内很多工程师大都一心只想成为技术大牛,而忽视了自己全方位的工程师职业素养和能力的培养。最近我有幸读到了Circle CI公司分享的工程胜任力矩阵,发现这份文档就是一份比较贴合互联网研发型企业的工程师职级胜任力框架,于是我在它的基础上,重新整理出了一份更适合国内工程师阅读的《工程师职级胜任力框架》,并把它分享在波波的github站点上,希望这份文档对工程师的职业开发和成长有帮助。注,Circle CI.

2020-12-30 11:32:32 3546 2

原创 给程序员推荐的两本编程技术书

书籍推荐技术圈的朋友经常让我推荐一些软件开发相关的技术书,我职业早年确实读过不少编程相关书籍,如果只能推荐两本的话,我认为真正值得推荐的是这两本,一本是《深入理解计算机系统》,另外一本是《代码大全》。《深入理解计算机系统》,英文名是《Computer System: A Programmer’s Perspective》,它是美国卡耐基梅隆(CMU)大学的计算机系统课程教材,CMU是全美计算机科学(CS)排名前三的大学。这门课在CMU被誉为镇校神课,对应的课程编号是15-213,它正好是CMU大学的邮编

2020-11-25 16:18:40 718

原创 最小可用架构

前言最小可用架构Minimum Viable Architecture是一种架构原则,也可以说是一套架构方法论。它指出在一家互联网公司的生命周期过程中,通常会经历哪几个阶段。对于处在不同阶段的公司应该采用什么样的架构和技术,它也给出了指导建议。最小可用架构这个方法论,是由前eBay首席架构师RandyShoup[参考附录1]所提出。波波在RandyShoup的演讲视频和PPT[参考附录2/3]的基础上,根据自己的经验和理解,对这个方法论做出了进一步的阐释。三家公司的架构演进亿贝、携程和拍拍贷,是我

2020-09-09 22:04:53 1286

原创 如何解决微服务的数据聚合Join问题?

单库Join问题有后端开发经验的同学应该了解,对于传统SQL数据库,我们通常以正规化(normalization)的方式来建模数据。正规化的好处是数据冗余少,不足之处是数据聚合Join会比较麻烦。实际Join的时候,需要将几张相关表,通过主键和外键关系才能Join起来。我们知道,Join是一种开销比较大的SQL运算,当数据量少的时候,这种开销通常OK。但是随着企业规模逐渐变大,数据库中的数据量也会越变越大,相应地,Join的开销也会越来越大。于是,Join变慢的问题就会越来越突出,通常表现为用户的查询慢

2020-09-09 22:03:19 3869

原创 如何解决微服务的数据一致性分发问题?

介绍系统架构微服务化以后,根据微服务独立数据源的思想,每个微服务一般具有各自独立的数据源,但是不同微服务之间难免需要通过数据分发来共享一些数据,这个就是微服务的数据分发问题。Netflix/Airbnb等一线互联网公司的实践[参考附录1/2/3]表明,数据一致性分发能力,是构建松散耦合、可扩展和高性能的微服务架构的基础。本文解释分布式微服务中的数据一致性分发问题,应用场景,并给出常见的解决方法。本文主要面向互联网分布式系统架构师和研发经理。为啥要分发数据?场景?我们还是要从具体业务场景出发,为啥要

2020-07-02 17:56:24 3012

原创 优秀架构师是如何学习开源项目的?

优秀架构师是如何学习开源项目的?一、前言大家好,我是架构师杨波,大家都叫我波波老师。波波可以说是一个不折不扣的开源爱好者,在一线企业工作时,波波就花费大量的时间和精力,研究和学习开源代码。即便现在转入技术培训行业,波波仍然会花大量时间,研究github上的开源项目。另外,波波业余时间也开发一些开源小项目。可以这样说,波波今天之所以能够成长为一个资深软件架构师,开源项目对我的帮助是非常大的。近年,波波在极客时间上输出一些技术课程,这些课程大部分都是基于开源项目开发的。输出过程中,经常有学员会问我该如何

2020-06-25 15:40:27 1455

翻译 关于致富的35条建议

这篇《关于致富的35条建议》,是波波从《How to Get Rich : Every Episode》[附录1]这篇长文(超过3.6万英文单词)翻译整理而来。波波非常认同原文作者Naval关于挣钱和财富的理念,有种强烈的得道恨晚的感觉~要是早十年就懂这些道理就好了,所以专门花时间翻译整理,并且放在自己的公众号里头。期望以后可以经常回顾,加深理解,并最终深入自己的mindset。同时也可以把相关理...

2020-01-21 11:03:58 3069 1

原创 Kubernetes网络三部曲之三 ~ NodePort vs LoadBalancer vs Ingress

前言在上一篇《Kubernetes网络三部曲~Service网络》中,波波讲解了K8s的4层网络栈中的第2层Service网路。有了Service网络,K8s集群内的应用可以通过服务名/ClusterIP进行统一寻址和访问,而不需要关心应用集群中到底有多少个Pods,Pod的IP是什么,会不会变化,以及如何以负载均衡方式去访问等问题。但是,K8s的Service网络只是一个集群内部网络,集群外部...

2019-09-24 10:22:56 10471 7

原创 Kubernetes网络三部曲之二~Service网络

前言在上一篇《Kubernetes网络三部曲~Pod网络》中,波波讲解了K8s的4层网络中的第1层Pod网络。有了Pod网络,K8s集群内的所有Pods在逻辑上都可以看作在一个平面网络内,可以正常IP寻址和互通。但是Pod仅仅是K8s云平台中的虚拟机抽象,最终,我们需要在K8s集群中运行的是应用或者说服务(Service),而一个Service背后一般由多个Pods组成集群,这时候就引入了服务发...

2019-09-24 10:12:38 7740 5

原创 Kubernetes网络三部曲之一~Pod网络

前言K8s是一个强大的平台,但它的网络比较复杂,涉及很多概念,例如Pod网络,Service网络,Cluster IPs,NodePort,LoadBalancer和Ingress等等,这么多概念足以让新手望而生畏。但是,只有深入理解K8s网络,才能为理解和用好K8s打下坚实基础。为了帮助大家理解,模仿TCP/IP协议栈,我把K8s的网络分解为四个抽象层,从0到3,除了第0层,每一层都是构建于前...

2019-09-21 11:34:04 14792 8

原创 如何理解Kubernetes架构?

前言理解K8s的架构是运用好K8s的基础,本文波波帮助大家梳理一下K8s的架构。我们先会对K8s的架构进行一个概览,然后分别剖析Master和Worker节点的组件构成,然后把这些组件再集成起来,通过一个发布样例展示这些组件是如何配合工作的,最后展示K8s集群的总体架构。架构概览上图是K8s架构的概览。K8s集群中主要有两类角色,一类是Master节点,另外一类是Worker节点,简单讲,...

2019-09-02 11:33:53 2888 3

原创 构建微服务技术中台,SpringCloud和Kubernetes该如何选型?

前言中台架构一词最近在技术圈内比较火,波波基于自己的经验和视角,也来凑个热闹聊聊什么是中台架构。中台架构实际由若干个层次组成,其中微服务技术中台是构建中台架构的重要组成部分。SpringCloud和Kubernetes,是目前互联网企业构建微服务技术中台所采用的主流技术栈,波波也会分析和比对这两个方案。Kubernetes平台封装了构建微服务技术中台所需的关键基础服务,它是波波推荐的,构建微服务...

2019-08-18 17:17:40 8834 1

原创 一个中国式微服务架构模拟案例

介绍我和极客时间合作的课程《微服务架构和实践160讲》已经于2018年底完成,最后一个模块是综合案例分析,通过一个简单的模拟业务案例,将之前课程的各个组件集成起来,包括:统一授权认证中心Gravitee OAuth2集中配置Apollo基础服务Zuul/Eureka/Ribbon/Hystrix监控反馈CAT/Prometheus这些组件既包括Spring Cloud技术栈的部分组...

2019-02-19 10:24:11 2031

转载 一个创业失败案例的复盘

前言Staffjoy[参考1]是一家曾经的技术初创公司,公司主要研发自动排程(Automatic Scheduling)应用,不幸的是,这个公司只经历了两年(2016~2017)就宣布关闭,原因在创始团队发现他们的业务模式无法达成Product/Market Fit。在Staffjoy官方博客上,创始Philip I. Thomas复盘了他两年创业的经验收获[参考2],我觉得很有价值,所以也总结...

2019-02-16 10:09:10 1488

原创 构建OAuth2服务器~Golang语言实现

前言自从我和极客时间合作的课程《微服务架构和实践160讲》上线以来,陆续收到一些学员的反馈,包括:Spring Cloud OAuth2复杂难以理解OAuth2的四个流程到底是如何实现的?课程缺乏项目架构设计和实战开发案例波波老师实践中是如何做架构设计的?基于学员的上述反馈和疑问,同时考虑到OAuth2是微服务架构的重要环节,我决定带领大家分析一个轻量级OAuth2服务器(项目名...

2019-02-15 10:34:40 3003 1

原创 我为啥暂不看好ServiceMesh?

前言过去的2018年,ServiceMesh(服务网格)概念在社区里头非常火,有人提出2018年是ServiceMesh年,还有人提出ServiceMesh是下一代的微服务架构基础。作为架构师,如果你现在还不了解ServiceMesh的话,是否感觉有点落伍了?那么到底什么是ServiceMesh?它诞生的背景是什么?它解决什么问题?企业是否适合引入ServiceMesh?根据近年在一线互联网企...

2019-02-14 13:05:52 990

原创 焦虑的时代,工程师如何高效学习?

介绍最近群里内经常有工程师(尤其是工作经验浅的)会问我同一个问题:如何快速高效学习?大家似乎都很焦虑,渴望通过高效学习来提升自己,快速成长。基于自己的实践和思考,我总结了这篇文章,希望对大家有所启发。原则我认为高效学习必须基于一些原则,下面是我总结梳理出来的五点,其中前面三点是根本原则,后面两点是通用原则:一、价值导向原则首先,高效学习一定是有问题域或者说价值导向的。首先你要找到问题域...

2019-02-13 10:14:26 947 4

原创 调用链监控产品该如何选择?

本文回顾分布式调用链监控(Distributed Tracing)产品的演进史,介绍近年出现的OpenTracing标准,对主流的开源产品进行比较,并给出选型建议。一、演进史2012年初,我作为携程框架研发部架构师,主导研发了携程第一代的分布式调用链监控产品CTrace,当时在国内算是比较早的引入调用链监控的一个案例。之后我一直对分布式调用链监控这个技术领域比较关注,下图是我近期总结的该领域的...

2019-02-12 11:26:39 1435

原创 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 10220 5

原创 Zuul网关生产部署实践

介绍Zuul是Netflix开源的微服务网关,在Netflix经过大规模生产验证,在业界很多公司有落地案例。本文介绍Zuul网关的一些生产部署实践。Zuul参考部署架构上图是一个可供参考的Zuul部署架构,总体可以简化为一个三层架构:第一层、负载均衡LBZuul网关本身无状态,以集群方式部署,它的前端需要负载均衡LB支持。在AWS云中,经常使用ELB作为负载均衡器,这个也是Netfl...

2019-02-11 13:05:17 3830 1

原创 Zuul网关路由管理实践

介绍网关的核心功能之一是路由转发,为此,网关需要获取并维护一张路由表,这个路由表简单可以理解为一个服务名<>服务地址的映射表,有了这张路由表,网关就可以根据请求路径或者HTTP头中的服务信息,将请求转发到对应的目标服务地址。Zuul[附录1]是Netflix开源的微服务网关,在Netflix经过大规模生产级验证,最新的数据表明Netflix每天有近千亿级流量要经过Zuul网关。另外...

2019-02-11 12:57:33 1499

原创 微服务配置组件变色龙Archaius

介绍如果我们要设计开发一套微服务基础架构,大家觉得哪个组件是最基础的?基于多年互联网分布式系统的实战经验,我的回答是配置中心以及配套的客户端。之前我在极客时间上的课程《微服务架构和实践160讲》中,已经深度剖析了携程开源的Apollo配置中心,Apollo是自带客户端的,它的客户端不错很灵活,但是实际上Netflix也开源了一个叫变色龙Archaius的配置中心客户端,而且Archaius可以...

2019-02-11 12:50:28 3705 2

原创 四个架构设计案例及其思维方式

一、介绍架构的本质是管理复杂性,抽象、分层、分治和演化思维是我们工程师/架构师应对和管理复杂性的四种最基本武器。在上一篇架构之道~四种核心架构思维中,我先介绍了抽象、分层、分治和演化这四种应对复杂性的基本武器。在本篇《架构之道~四个架构设计案例及其思维方式》中,我会通过四个案例,讲解如何综合运用这些武器,分别对小型系统,中型系统,基础架构,甚至是组织技术体系进行架构和设计。二、小型系统案例~...

2019-02-11 12:45:51 8493

原创 携程Apollo配置中心的架构

一、介绍Apollo(阿波罗)[参考附录1]是携程框架部研发并开源的一款生产级的配置中心产品,它能够集中管理应用在不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。Apollo目前在国内开发者社区比较热,在Github上有超过5k颗星,在国内众多互联网公司有落地案例,可以说Apollo是目前配置中心产品领域Number1的产...

2019-02-11 12:40:38 2022

原创 如何不靠运气致富?

介绍本文来自Naval Ravikant(AngelList的创始人)在Twitter上的推文,被整理转载在hackernoon上[参考附录]。我觉得作者的观点都是真知灼见,读后很受启发,所以我把它翻译出来,放在自己博客上,希望后面能时刻提醒自己。原文和翻译Seek wealth, not money or status. Wealth is having assets that earn...

2019-02-11 12:30:02 853

原创 SoundCloud微服务架构是如何分层的?

介绍在前一篇BFF和网关是如何演化出来的文章中,我向大家解释了BFF和网关是什么,在微服务架构体系中各承担什么职责,以及它们是如何演化出来的。在上一篇Netflix的微服务是如何分层的一文中,我以Netflix公司为案例,分析了Netflix的微服务分层架构的组织方式和近期演进。本文继续以SoundCloud公司为案例,通过一系列架构视图,展示SoundCloud微服务架构的分层组织方式。如果...

2019-02-11 12:23:33 1994

原创 Netflix微服务架构是如何分层的?

介绍在之前一篇BFF和网关是如何演化出来的文章中,我向大家解释了BFF和网关Gateway是什么,在微服务架构体系中各承担什么职责,以及它们是如何演化出来的。在本文和后续一篇文章中,我会分析Netflix(本文)和SoundCloud(下一篇)两家公司的微服务分层架构,帮助大家更深入理解BFF和网关Gateway在分布式微服务架构中的地位和作用,以及前沿互联网公司的微服务架构是如何分层组织的。...

2019-02-11 12:19:48 2040 1

原创 微服务为什么要配置中心?

一、介绍在系统架构中,和安全、日志、监控等非功能需求一样,配置管理也是一种非功能需求。配置中心是整个微服务基础架构体系中的一个组件,如下图,它的功能看上去并不起眼,无非就是简单配置的管理和存取,但它是整个微服务架构中不可或缺的一环。另外,配置中心如果真得用好了,它还能推动技术组织持续交付和DevOps文化转型。本文介绍在分布式微服务环境下,应用配置管理背后的业务需求,配置的各种分类和一些高级...

2019-02-11 12:15:15 1904

原创 BFF和网关是如何演化出来的?

介绍BFF(Backend for Frontend)和网关Gateway是微服务架构中的两个重要概念,这两个概念相对比较新,有些开发人员甚至是架构师都不甚理解。本文用假想的公司案例+图示的方式,解释BFF和网关是什么,它们是怎么演化出来的。希望对架构师设计和落地微服务架构有所启发。服务化架构V1我们先把时间推回到大致2011年左右。假设有一家有一定业务体量的电商公司CoolShop,在这...

2019-02-11 12:06:45 4498

原创 微服务2.0技术栈选型手册

一、前言2014年可以认为是微服务1.0的元年,当年有几个标志性事件,一是Martin Fowler在其博客上发表了“Microservices”一文,正式提出微服务架构风格;二是Netflix微服务架构经过多年大规模生产验证,最终抽象落地形成一整套开源的微服务基础组件,统称NetflixOSS,Netflix的成功经验开始被业界认可并推崇;三是Pivotal将NetflixOSS开源微服务组件...

2019-02-11 12:02:24 709

原创 四种核心架构思维

一、介绍架构的本质是管理复杂性,抽象、分层、分治和演化思维是我们工程师/架构师应对和管理复杂性的四种最基本武器。最近团队来了一些新人,有些有一定工作经验,是以高级工程师/架构师身份进来的,但我发现他们大部分人思维偏应用和细节,抽象能力弱。所以作为团队技术培训的一部分,我整理了这篇文章,希望对他们树立正确的架构设计思维有帮助。我认为,对思维习惯和思考能力的培养,其重要性远远大于对实际技术工具的掌...

2019-02-11 11:56:35 22707 5

原创 微服务发布模式

一、前言根据2017年的DevOps发展报告,高效能组织和低效能组织在软件交付的效率上有数量级上的差异。技术组织的软件交付能力是一种综合能力,涉及众多环节,其中发布是尤为重要的环节。作为技术人员,大家可能听说过“滚动发布”和“蓝绿发布”等术语,但是很多人并不清楚这些术语背后的原理。本文试图总结当前主流的发布策略,每个的优劣,适用性,让开发人员特别是架构师对现代发布技术有一个更为清晰全面的认识,...

2019-02-11 11:39:24 1875 1

原创 中国式微服务技术栈2.0

前言近年,Spring Cloud俨然已经成为微服务开发的主流技术栈,在国内开发者社区非常火爆。我近年一直在一线互联网公司(携程,拍拍贷等)开展微服务架构实践,根据我个人的一线实践经验和我平时对Spring Cloud的调研,我认为Spring Cloud技术栈中的有些组件离生产级开发尚有一定距离。,比方说Spring Cloud Config和Spring Cloud Sleuth都是Pivo...

2019-02-11 11:29:39 932 1

原创 波波的技术选型哲学

一、前言技术选型是一个很热门的话题,最近我看到自己的微信朋友圈有好几篇关于技术选型的文章,读者对这类主题的热情很高。在技术组织内部,技术人员经常会面临技术选型问题,有时候,技术选型还常常牵扯好几波干系人,相互之间还会产生争议,有的甚至还可能发展到派系斗争的地步。即便像我自己,已经有十几年研发和架构经验的老司机,不管是工作还是业余,有很大部分时间的思考都是深陷在A技术和B技术的利弊权衡之中,不能自...

2019-02-11 11:23:57 892 1

原创 成长型组织如何突破技术困局?

前言2017年我全程参与了一家成长型组织的技术架构转型升级,本文是在2016年底,在正式启动技术转型之前,我个人的一些战略思考总结。现在转型已经取得阶段性成果,回过头来看,对于大部分成长型组织的技术转型升级,我认为本文还是蛮有借鉴价值的。本分享假设针对提供互联网服务的软件研发型组织,其它类似涉及IT系统的组织也可从中获得借鉴。本分享属于个人思考心得总结,如有理解不当偏颇之处,还请大家不吝指教...

2019-02-11 11:19:46 878

原创 聊聊Netflix的技术创新

前言昨天晚上和同事一起吃晚饭,期间聊到Netflix技术那些大胆的创新,事后觉得有必要总结一下,给团队分享,让大家了解世界顶级的技术组织在技术、架构、组织和文化方面的创新。让大家在埋头干活的时候,偶尔也可以抬头看看天(大处着眼,小处着手)。于是就有了这篇文章。注意,Netflix技术本身也在快速的迭代进化中,本文主要基于Netflix在slideshare上的分享总结而成,其中的很多内容目前可...

2019-02-11 11:12:11 5135 1

原创 架构师必须知道的架构设计原则

一、前言如果一个技术已经存在3年,比如现在很火的前端技术react和vue等,那么我能预估这个技术大致还有3年的生命期,再久就不确定了;如果一个架构或设计原则已经存在15年,例如单一职责和依赖倒置原则,我可以预期它还有15年甚至更久的生命期。原则是比具体技术更抽象,更接近事物本质,也更经得起时间考验的东西。这些原则沉淀在架构师的脑海中,最终内化成他的mindset,以潜意识方式影响和指导他的架构...

2019-02-11 11:01:05 2135 1

原创 工程师成长快车道

介绍今年公司来了不少应届生还有实习生,我多次受邀给他们做一些和成长相关的分享,获得良好反馈,我想可以把这些分享总结成文,一方面下次自己就不用频繁去讲,新人来让他们看文章就好了,另一方面也是想把自己的心得分享给更多社会上的处在职业早期的年轻人。我本人在软件研发行业工作有十多年,经历过不少公司,见证过不少年轻人的成长,自己也带过很多年轻人。从他们的成长历程中,我看到那些成长较快的年轻人身上有一些共...

2019-02-11 10:52:44 776

computer networking top down approach 4th solution

computer networking top down approach 4th solution

2008-09-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除