22 小时前 / yybbb
实现平衡是一个永无止境的追求。 当业务依赖软件质量和速度来生存时,这种平衡就更难维持了。 许多公司都面临着持续快速交付高质量软件的挑战,这些软件通过质量工程限制生命周期。 Airbnb 在加速和扩展其价值主张的过程中面临着众多挑战,尤其是其信息系统的发展过程。 本文分享了 Airbnb 在质量工程方面的架构迭代之旅,并附有实用要点。 —1— 从单体应用到微服务,什么都没改变 Airbnb 和许多软件公司一样,也是由一些积极进取的工程师发起构建最小可行产品以进入他们的市场从而发展起来的。
4 天前 / 我是阳明
前面我们提到了 Loki 部署的单体模式和读写分离两种模式,当你的每天日志规模超过了 TB 的量级,那么可能我们就需要使用到微服务模式来部署 Loki 了。 微服务部署模式将 Loki 的组件实例化为不同的进程,每个进程都被调用并指定其目标,每个组件都会产生一个用于内部请求的 gRPC 服务器和一个用于外部 API 请求的 HTTP 服务。 ingesterdistributorquery-frontendquery-schedulerquerierindex-gatewayrulercompactor 将组件作为单独的微服务运行允许通过增加微服务的数量来进行扩展,定制的集群对各个组件具有更好的可观察性。
5 天前 / 浪客书心
唐朝第二位皇帝唐太宗为了扩张领土,到处攻打周边的小国,即使有不服的小国也被唐太宗打服了。这些小国后来就都需要向唐太宗朝贡。 朝贡就是朝拜和进贡。是两国或者说是两个政府之间的一种承认对方尊卑关系的礼节性外交。 唐朝朝贡图,来源百度百科 “贞观之治”说的就是当时唐朝的鼎盛时期, 周围小国都被打趴下了,国内繁荣发展,以十分惊人的速度成为世界顶级强国。唐人街中的“唐”就是说的唐朝,足以说明唐朝对世界的影响。 小国定期向唐朝进行朝贡这不就是微服务的心跳机制吗? 他们是在告诉唐朝,我还是服你管教的。
14 天前 / 冷星1024
作者 | Ron Fybish 译者 | Sambodhi 策划 | 闫园园什么是微服务微服务是一种应用架构,它将每个应用功能都放在自己的服务中,与其他服务隔离。这些服务是松散耦合的,可独立部署。 这种架构的出现是为了解决旧的 Web 应用开发的单体方法。在单体软件中,所有的东西都是作为一个单元构建的,所有的业务逻辑都被归入一个广泛的应用。 这种方法使更新代码库的过程变得复杂化,因为它影响到整个系统,即使是最小的代码改动也需要构建和部署整个软件的新版本。此外,哪怕你只想扩展应用的某个特定功能,却需要扩展整个应用来实现它。
16 天前 / hyper0x
微服务概述 微服务架构是一种架构风格,它将一个大的系统构建为多个微服务的集合,这些微服务是围绕业务功能构建的,服务关注单一的业务功能,这些服务具有以下特点: 高度可维护和可测试松散的耦合可独立部署围绕业务功能进行构建由不同的小团队进行维护微服务架构能够快速、频繁、可靠地交付大型、复杂的应用程序,通过业务拆分实现服务组件化,使用组件进行组合从而快速开发系统。 服务划分 我们首先进行微服务的划分,在实际的项目开发中,我们通常采用两种微服务划分策略,第一种方式是通过业务职能进行微服务边界的划分...
30 天前 / 北鱼扶摇
本文通过对 RESTful WebService 中异常处理的几个关键点如自定义错误码、定制错误消息、自定义异常、全局异常处理进行介绍,与读者分享本人对 Spring 异常处理和对 RESTful API 设计的思考和实践。 随着前后端分离,前端工程化,后端微服务化,越来越多的应用都开始倾向于使用 RESTful API 为各种各样的客户端提供服务。设计一套优雅的 API 服务,需要诸多考量,而异常处理往往被忽视,而我认为这恰恰是评判一套 API 设计好坏的很重要的一个衡量因素。经过很多的经验借鉴和思考,最终形成了一套我认为还算合理的异常处理方式,权作抛砖引玉。
35 天前 / colobu
ebpf是一种创新的革命性技术,它能在内核中运行沙箱程序, 而无需修改内核源码或者加载内核模块。将 Linux 内核变成可编程之后,就能基于现有的(而非增加新的)抽象层来打造更加智能、 功能更加丰富的基础设施软件,而不会增加系统的复杂度,也不会牺牲执行效率和安全性。 BPF的第一个版本在1994年问世。我们在使用tcpdump工具编写规则的时候其实就使用到它了,该工具用于查看或”嗅探”网络数据包。 使用ebpf技术,你可以从安全、跟踪&性能分析、网络、观测&监控等方向提供新的思路和技术: 安全:可以从系统调用级、packet层、socket层进行安全检查...
40 天前 / 开发者头条
本文内容节选自「码农周刊 VIP 会员专属邮件周报 Vol.091」,感谢阅读。 想邮件订阅周报?扫码即刻订阅! ↓↓↓ 本期,首先分享的是避免「瞎忙活」的十条秘笈,摘录几条,共勉。 1)清晰的目标。 2)垃圾时间处理信息。 3)不要和别人比较。 4)要有成长心态。 5)锻炼身体。 …… 字节“FII 事件”发生的那一夜 https://mp.weixin.qq.com/s/zqJ4AJjE5I9WDkcQFMlM6Q 信任不会忽然消失,但很难说清开头在哪里。 别再说谷歌取消 OKR 了 https://mp.weixin.qq.com/s/l6sZgjnKWoTN8JWTIIwtjA 在 OKR 这件事情上,优秀的学习者不会简单地只抄老大哥的答案...
50 天前 / hyper0x
我是一只可爱的土拨鼠,专注于分享 Go 职场、招聘和求职,解 Gopher 之忧!欢迎关注我。欢迎大家加入 Go 招聘交流群,来这里找志同道合的小伙伴!跟土拨鼠们一起交流学习。 最近小土阅读了《生产微服务》这本书,摘录了生产就绪 check 列表和评估你微服务的清单。一个服务从 0-1 的生产过程。很值得参考。 生产就绪检查列表一个生产就绪的微服务是稳定且可靠的它有一个标准化的开发周期。 它的代码需要经过初步检查、单元测试、集成测试以及端到端的测试。 它的测试、打包、构建和发布流程是自动化的。
57 天前 / 趣编程
微服务(microservice)是一种软件架构,正得到越来越多的关注。 但是,它到底是什么意思?什么样的架构可以叫做微服务? 网上的文章虽然很多,但是都太复杂,初学者不容易看懂。我认为,这个概念其实非常简单,可以很通俗地说明白。 一、单体软件要理解微服务,首先需要理解软件架构的演变。 早期的软件,所有功能都写在一起,这称为单体架构(monolithic software)。 整个软件就是单一的整体,彷佛一体化的机器。 可以想到,软件的功能越多,单体架构就会越复杂,很多缺点也随之暴露出来。 (1)所有功能耦合在一起,互相影响,最终难以管理。
70 天前 / Ryan众乐
常用 API 网关的对比和选型,并讲解我司自研的微服务网关,干货满满! 微服务近几年非常火,围绕微服务的技术生态也比较多,比如微服务网关、Docker、Kubernetes 等。 我是于 2019 年开始接触微服务网关,当时和公司的一位同事一起开发,由于技术能力有限,我只负责网关后台,后续微服务网关的迭代,我其实没有参与,不过后来抽空看了微服务网关前台的代码,所以对这套微服务网关的实现原理算是基本掌握。
77 天前 / 俞凡
怎样才能提高研发效率?是依赖于各自独立的本地开发测试环境,还是依赖完整的端到端测试?Lyft 的这一系列文章介绍了其开发环境的历史和发展,帮助我们思考如何打造一套适合大规模微服务的高效研发环境。本系列共 4 篇文章,这是第 4 篇。原文:Scaling productivity on microservices at Lyft (Part 4): Gating Deploys with Automated Acceptance Tests[1] 本文是本系列文章的第四篇,也是最后一篇,主要讲述我们在 Lyft 面对越来越多的开发人员和服务时,如何扩展开发实践。
83 天前 / 俞凡
怎样才能提高研发效率?是依赖于各自独立的本地开发测试环境,还是依赖完整的端到端测试?Lyft 的这一系列文章介绍了其开发环境的历史和发展,帮助我们思考如何打造一套适合大规模微服务的高效研发环境。本系列共 4 篇文章,这是第 3 篇。原文:Scaling productivity on microservices at Lyft (Part 3): Extending our Envoy mesh with staging overrides[1] 本系列介绍的是 Lyft 在面对越来越多的开发人员和服务时,如何高效扩展开发实践,本文是第三篇。
90 天前 / sjf0115
在微服务体系架构下,搜狐智能媒体使用 Zipkin 进行服务链路追踪(Tracing)的埋点采集,将采集的 Trace 信息存储到 StarRocks 中。通过StarRocks强大的 SQL 计算能力,对 Tracing 信息进行多维度的统计、分析等操作,提升了微服务监控能力,从简单统计的 Monitoring 上升到更多维度探索分析的 Observability。 全文主要分为三个部分:第一节主要介绍微服务下的常用监控方式,其中链路追踪技术,可以串联整个服务调用链路,获得整体服务的关键信息,对微服务的监控有非常重要的意义。
96 天前 / hyper0x
大家好,我是 frank。 欢迎大家点击标题下方蓝色文字「Golang 语言开发栈」关注公众号。 设为星标,第一时间接收推送文章。 文末扫码,加群一起学 Golang 语言。 01 介绍 我们在上一篇文章「Go 语言基于 Go kit 开发 Web 项目」中,介绍了怎么使用 Go kit 开发 Web 项目,在这篇文章中,我们传输层使用的是 HTTP,本文我们介绍 Go kit 怎么集成 gRPC,也就是说我们在传输层使用 rpc。 在阅读完前面几篇文章后,我们已经了解 Go kit 分为三层,分别是 Transport、Endpoint 和 Service,其中 Transport 负责网络传输,Endpoint 负责接收请求和返回响应...