11-架构设计流程:设计备选方案
摘要:上一期我讲了架构设计流程第1步识别复杂度,确定了系统面临的主要复杂度问题后,方案设计就有了明确的目标,我们就可以开始真正进行架构方案设计了。今天我来讲讲架构设计流程第2步:设计备选方案,同样还会结合上期“前浪微博”的场景,谈谈消息队列设计备选方案的实战。 架构设计第2步:设计备选方案 架构师的工作并
阅读全文
posted @
2020-08-18 10:56
肉松蛋卷
阅读(320)
推荐(0)
32-微服务混合云部署实践
摘要:专栏上一期我给你讲解了微服务多机房部署的实践,以及需要解决的三个问题。大多数业务在发展到一定阶段,要么出于高可用性的需要,把业务部署在多个机房以防止单个机房故障导致整个服务不可用;要么出于访问量大的需要,把业务流量分散到多个机房以减少单个机房的流量压力。此时,服务一般是部署在企业内部机房的机器上,并
阅读全文
posted @
2020-08-18 10:29
肉松蛋卷
阅读(535)
推荐(0)
31-微服务多机房部署实践
摘要:专栏前面我在讲服务治理时提到过,为了实现高可用性,微服务一般要部署在多个机房,保证有一个机房因为各种不可抗力因素导致不可用时,可以把流量切换到其他可用机房来避免故障。但是,是不是只要部署到多个机房就万事大吉了呢?你有没有想过这几个问题呢? 一切正常时用户请求该访问哪个机房? 多个机房之间的数据如何同
阅读全文
posted @
2020-08-18 10:28
肉松蛋卷
阅读(676)
推荐(0)
30-如何做好微服务容量规划
摘要:专栏上一期我给你讲解了单体应用拆分为微服务后带来的开发、测试和运维复杂度的提升,可以通过DevOps实现CI/CD流程的自动化来解决。除此之外,单体应用拆分为微服务还带来另外一个问题,也就是拆分出来后的多个微服务容量如何规划的问题。在单体应用时,只需要针对这个单体应用的访问量和实际接口性能来决定要不
阅读全文
posted @
2020-08-18 10:26
肉松蛋卷
阅读(842)
推荐(0)
29-微服务如何实现DevOps
摘要:把一个大的单体应用拆分成多个微服务之后,每个服务都可以独立进行开发、测试和运维。但当拆分的微服务足够多时,却又仿佛陷入一个新的泥沼,无论是业务代码的开发还是测试和运维,工作量都比之前提升了很多。 采单体应用架构时,一个业务需求只需要修改单体应用的代码,然后针对这个单体应用进行测试,测试通过后再把单体
阅读全文
posted @
2020-08-18 10:25
肉松蛋卷
阅读(421)
推荐(0)
25-微服务为什么要容器化?
摘要:专栏前面的文章,我主要给你讲解了微服务架构的基础组成以及在具体落地实践过程中的会遇到的问题和解决方案,这些是掌握微服务架构最基础的知识。从今天开始,我们将进一步深入微服务架构进阶的内容,也就是微服务与容器、DevOps之间的关系。它们三个虽然分属于不同领域,但却有着千丝万缕的关系,可以说没有容器的普
阅读全文
posted @
2020-08-18 10:19
肉松蛋卷
阅读(1640)
推荐(0)
10-Dubbo框架里的微服务组件
摘要:经过前面几期的讲解,你应该已经对微服务的架构有了初步的了解。简单回顾一下,微服务的架构主要包括服务描述、服务发现、服务调用、服务监控、服务追踪以及服务治理这几个基本组件。 那么每个基本组件从架构和代码设计上该如何实现?组件之间又是如何串联来实现一个完整的微服务架构呢?今天我就以开源微服务框架Dubb
阅读全文
posted @
2020-08-18 10:16
肉松蛋卷
阅读(201)
推荐(0)
09-微服务治理的手段有哪些
摘要:上一期我给你讲述了服务追踪的基本原理,有了分布式服务追踪系统,在服务出现问题的时候,我们就可以定位服务哪里出现了问题。一般单体应用改造成微服务架构后,还会增加哪些问题呢?又该如何应对呢? 前面我讲到单体应用改造为微服务架构后,服务调用由本地调用变成远程调用,服务消费者A需要通过注册中心去查询服务提供
阅读全文
posted @
2020-08-18 10:15
肉松蛋卷
阅读(258)
推荐(0)
08-如何追踪微服务调用
摘要:在微服务架构下,由于进行了服务拆分,一次请求往往需要涉及多个服务,每个服务可能是由不同的团队开发,使用了不同的编程语言,还有可能部署在不同的机器上,分布在不同的数据中心。 下面这张图描述了用户访问微博首页,一次请求所涉及的服务(这张图仅作为示意,实际上可能远远比这张图还要复杂),你可以想象如果这次请
阅读全文
posted @
2020-08-18 10:14
肉松蛋卷
阅读(252)
推荐(0)
07-如何监控微服务调用
摘要:单体应用相比,在微服务架构下,一次用户调用会因为服务化拆分后,变成多个不同服务之间的相互调用,这也就需要对拆分后的每个服务都监控起来。 在讲述如何监控微服务调用前,首先你要搞清楚三个问题:监控的对象是什么?具体监控哪些指标?从哪些维度进行监控?下面就从这三个问题开始,一起来看看如何监控微服务调用。
阅读全文
posted @
2020-08-18 10:13
肉松蛋卷
阅读(529)
推荐(0)
06-如何实现RPC远程服务调用
摘要:专栏上一期我讲过,要完成一次服务调用,首先要解决的问题是服务消费者如何得到服务提供者的地址,其中注册中心扮演了关键角色,服务提供者把自己的地址登记到注册中心,服务消费者就可以查询注册中心得到服务提供者的地址,可以说注册中心犹如海上的一座灯塔,为服务消费者指引了前行的方向。 有了服务提供者的地址后,服
阅读全文
posted @
2020-08-18 10:11
肉松蛋卷
阅读(424)
推荐(0)
05-如何注册和发现服务
摘要:专栏上一期,我给你介绍了服务发布和引用常用的三种方式:RESTful API、XML配置以及IDL文件。假设你已经使用其中一种方式发布了一个服务,并且已经在一台机器上部署了服务,那我想问你个问题,如果我想调用这个服务,我该如何知道你部署的这台机器的地址呢? 这个问题就跟我想去吃肯德基一样,我可以去谷
阅读全文
posted @
2020-08-18 10:09
肉松蛋卷
阅读(148)
推荐(0)
/04-如何发布和引用服务?
摘要:今天我要与你分享的第一个组件是服务发布和引用。我在前面说过,想要构建微服务,首先要解决的问题是,服务提供者如何发布一个服务,服务消费者如何引用这个服务。具体来说,就是这个服务的接口名是什么?调用这个服务需要传递哪些参数?接口的返回值是什么类型?以及一些其他接口描述信息。 我前面说过,最常见的服务发布
阅读全文
posted @
2020-08-18 10:08
肉松蛋卷
阅读(188)
推荐(0)
03-初探微服务架构
摘要:上一期我给你讲了什么时候应该进行服务化,以及服务化拆分的两种方式即横向拆分和纵向拆分,最后还提到了引入微服务架构需要解决的问题。 我想你一定很好奇微服务架构到底是什么样子的,接下来我们一起走进微服务架构,来看看它的各个组成部分。 下面这张图是我根据自己的经验,绘制的微服务架构的模块图,在具体介绍之前
阅读全文
posted @
2020-08-18 09:51
肉松蛋卷
阅读(182)
推荐(0)
02-从单体应用走向服务化
摘要:那么到底什么时候应该拆分单体应用?拆分单体应用有哪些标准可依呢? 为了解答这两个问题,今天我将通过具体案例来阐述,希望你能够学会单体应用拆分成微服务的正确姿势。 什么时候进行服务化拆分? 从我所经历过的多个项目来看,项目第一阶段的主要目标是快速开发和验证想法,证明产品思路是否可行。这个阶段功能设计一
阅读全文
posted @
2020-08-18 09:49
肉松蛋卷
阅读(190)
推荐(0)
01-到底什么是微服务
摘要:从谷歌的搜索指数来看,微服务的热度在进入2017年后突然爆发,国内各大会议和论坛的相关讨论也如雨后春笋般层出不穷,各大一线互联网公司也纷纷将这一技术引入并在实际业务中落地。 然而据我所知,国内不少中小规模的技术团队对微服务的概念都不甚了解,对该不该引入微服务也不置可否。还有一些技术团队,没有考虑实际
阅读全文
posted @
2020-08-18 09:48
肉松蛋卷
阅读(179)
推荐(0)
微博技术解密(下)-微博存储的那些事儿
摘要:MySQL 上一期我讲到微博Feed的存储使用了两层的结构,为了减少对MySQL数据库的访问压力,在前面部署了Memcached缓存,挡住了99%的访问压力,只有1%的请求会访问数据库。然而对于微博业务来说,这1%的请求也有几万QPS,对于单机只能扛几千QPS的MySQL数据库来说还是太大了。为此我
阅读全文
posted @
2020-08-18 09:46
肉松蛋卷
阅读(1035)
推荐(1)
微博技术解密(上)-微博信息流是如何实现的?
摘要:今天我们先来看微博信息流架构,也就是微博的Feed是如何构建的。首先什么是Feed呢?根据我的理解,Feed是互联网2.0时代的产物,它与互联网1.0时代的产物——门户网站最大的不同之处就是Feed不需要用户在各个板块之间来回跳转获取信息,而是把不同的信息都聚合在一起,可以供用户源源不断地访问。这里
阅读全文
posted @
2020-08-18 09:44
肉松蛋卷
阅读(1596)
推荐(1)