mesh

美团命名服务的挑战与演进

余生颓废 提交于 2020-08-18 12:54:29
本文根据美团基础架构部技术专家舒超在2019 ArchSummit(全球架构师峰会)上的演讲内容整理而成。 命名服务主要解决微服务拆分后带来的服务发现、路由隔离等需求,是服务治理的基石。美团命名服务(以下简称MNS)作为服务治理体系OCTO的核心模块,目前承载美团上万项服务,日均调用达到万亿级别。为了更好地支撑美团各项飞速发展的业务,MNS开始从1.0向2.0演进。本文将围绕本次演进的初衷、实现方案以及落地的效果等方面进行展开,同时本文还介绍了命名服务作为一个技术中台组件,对业务的重要价值以及推动业务升级的一些成果。希望本文对大家能够有所启发。 一、MNS 1.0简介 从架构上看,MNS 1.0 主要分为三层:首先是嵌入业务内部的SDK,用作业务自定义调用;然后是驻守在每个机器上的SgAgent,以代理的方式将一些易变的、消耗性能的计算逻辑与业务进程分离开来,从而降低SDK对业务的侵入,减少策略变动对业务的干扰;远端是集中式的组件,包括健康检查模块Scanner,鉴权缓存模块MNSC,以及基于ZooKeeper(以下简称ZK)打造的一致性组件MNS-ZK,作为通知和存储模块。在层级之间设立多级缓存,利用“边缘计算”思想拆分逻辑,简化数据,尽量将路由分配等工作均摊到端上,从而降低中心组件负载。更多详情大家可参考《 美团大规模微服务通信框架及治理体系OCTO核心组件开源

我在阿里写代码学会的六件事

邮差的信 提交于 2020-08-18 07:30:28
写了多年的代码,始终觉得如何写出干净优雅的代码并不是一件容易的事情。按 10000 小时刻意训练的定理,假设每天 8 小时,一个月 20 天,一年 12 个月,大概也需要 5 年左右的时间成为大师。其实我们每天的工作中真正用于写代码的时间不可能有 8 个小时,并且很多时候是在完成任务,在业务压力很大的时候,可能想要达到的目标是如何尽快的使得功能 work 起来,代码是否干净优雅非常可能没有能放在第一优先级上,而是怎么快怎么来。 在这样的情况下是非常容易欠下技术债的,时间长了,这样的代码基本上无法维护,只能推倒重来,这个成本是非常高的。欠债要还,只是迟早的问题,并且等到要还的时候还要赔上额外的不菲的利息。还债的有可能是自己,也有可能是后来的继任者,但都是团队在还债。所以从团队的角度来看,写好代码是一件非常有必要的事情。如何写出干净优雅的代码是个很困难的课题,我没有找到万能的 solution,更多的是一些 trade off,可以稍微讨论一下。 代码是写给人看的还是写给机器看的? 在大部分的情况下我会认为代码是写给人看的。虽然代码最后的执行者是机器,但是实际上代码更多的时候是给人看的。我们来看看一段代码的生命周期:开发 --> 单元测试 --> Code Review --> 功能测试 --> 性能测试 --> 上线 --> 运维、Bug 修复 --> 测试上线 --> 退休下线

撸了一个 Feign 增强包

旧巷老猫 提交于 2020-08-18 05:41:47
前言 最近准备将公司的一个核心业务系统用 Java 进行重构,大半年没写 Java , JDK 都更新到 14 了,考虑到稳定性等问题最终还是选择的 JDK11 。 在整体架构选型时,由于是一个全新的系统,所以没有历史包袱,同时团队中也有多位大牛坐镇,因此我们的选项便大胆起来。 最终结果就是直接一把梭,直接上未来的大趋势: Service Mesh ,直接把什么 SpringCloud 、 Dubbo 这类分布式框架全部干掉。 本次的重点不是讨论 Service Mesh 是什么、能解决什么问题、为什么选择它,毕竟我也在学习阶段,啥时候整明白线上也稳定了再和大家来交流。 问题 既然方向定了就开始实际撸码了,不过刚一开始就验证了”理想很丰满、现实很骨感“; 由于我们去掉了 SpringCloud 和 Dubbo 这类框架,服务的注册、发现、负载均衡等需求全部都下沉到 Service Mesh 中提供了。 但对于开发来说依然希望可以调用本地方法的方式来调用远程服务,这在 SpringCloud 这类框架中是很容易实现的,框架本身就有很好的支持。 回到我们这个场景,需求其实很简单,就是想达到 SpringCloud 中的 Feign 这样的声明式+注解的方式调用。 @Autowired private StoreClient client ; Store store = client

Istio Sidecar

空扰寡人 提交于 2020-08-17 17:57:56
Istio Sidecar 概念及示例 Sidecar 描述了sidecar代理的配置。默认情况下,Istio 让每个 Envoy 代理都可以访问来自和它关联的工作负载的所有端口的请求,然后转发到对应的工作负载。您可以使用 sidecar 配置去做下面的事情: 微调 Envoy 代理接受的端口和协议集。 限制 Envoy 代理可以访问的服务集合。 您可能希望在较庞大的应用程序中限制这样的 sidecar 可达性,配置每个代理能访问网格中的任意服务可能会因为高内存使用量而影响网格的性能。 您可以指定将 sidecar 配置应用于特定命名空间中的所有工作负载,或者使用 workloadSelector 选择特定的工作负载。例如,下面的 sidecar 配置将 bookinfo 命名空间中的所有服务配置为仅能访问运行在相同命名空间和 Istio 控制平面中的服务。 每个名称空间只能有一个没有任何配置 workloadSelector 的 Sidecar 配置 , 如果 Sidecar 给定名称空间中存在多个不使用选择器的配置,则系统的行为是不确定的。 下面声明的 Sidecar 在根名称空间中声明了全局默认配置 istio-config ,该配置在所有名称空间中配置了sidecar,以仅允许将流量发送到同一名称空间中的其他工作负载以及该名称空间中的服务 istio-system 。

SpringCloud应用在Kubernetes上的最佳实践—开发部署

人走茶凉 提交于 2020-08-17 16:05:39
作者 | 孤弋 阿里云高级技术专家,负责 EDAS 的开发和用户体验优化工作。 导读 :在上一篇文章 《SpringCloud 应用在 Kubernetes 上的云上实践 - 开发篇》 中讲到可以通过两个工具,轻松地将一个 SpringCloud 应用从初始化到本地运行。本篇文章,我们将介绍如何将上一篇文章中提到的应用在云上跑起来。 初始化集群 为了将应用运行在云端,首先我们需要一个 Kubernetes 集群,在 EDAS 中使用 Kubernetes 集群目前最快的方式,是将一个阿里云容器集群中的 Kubernetes 集群( ACK 集群 ),导入到 EDAS 中来。 如果还没有ACK集群的话,您可以通过以下两种方式来创建一个: 直接进入容器服务的控制台进行创建; 如果您已经有一个在云上建好的集群,或者有一个在其他 IDC 或友商中有的集群,也可以在容器服务这边通过“注册已有集群”的方式,导入到容器服务中来。 等到 Kubernetes 集群就绪之后,在 EDAS 上需要进行一次集群“导入”,导入方式如下图所示: 在导入集群时,EDAS 会做以下操作: 初始化 EDAS 的集群控制器和相关资源,主要包含:基于开放云原生应用标准的 OAM Controller、日志采集的 Agent、监控链路中的 Arms 环境信息等;其中大部分控制器运行时不会占用用户集群的资源,而会运行在

我在阿里写代码学会的六件事

醉酒当歌 提交于 2020-08-17 15:47:46
写了多年的代码,始终觉得如何写出干净优雅的代码并不是一件容易的事情。按 10000 小时刻意训练的定理,假设每天 8 小时,一个月 20 天,一年 12 个月,大概也需要 5 年左右的时间成为大师。其实我们每天的工作中真正用于写代码的时间不可能有 8 个小时,并且很多时候是在完成任务,在业务压力很大的时候,可能想要达到的目标是如何尽快的使得功能 work 起来,代码是否干净优雅非常可能没有能放在第一优先级上,而是怎么快怎么来。 在这样的情况下是非常容易欠下技术债的,时间长了,这样的代码基本上无法维护,只能推倒重来,这个成本是非常高的。欠债要还,只是迟早的问题,并且等到要还的时候还要赔上额外的不菲的利息。还债的有可能是自己,也有可能是后来的继任者,但都是团队在还债。所以从团队的角度来看,写好代码是一件非常有必要的事情。如何写出干净优雅的代码是个很困难的课题,我没有找到万能的 solution,更多的是一些 trade off,可以稍微讨论一下。 代码是写给人看的还是写给机器看的? 在大部分的情况下我会认为代码是写给人看的。虽然代码最后的执行者是机器,但是实际上代码更多的时候是给人看的。我们来看看一段代码的生命周期:开发 --> 单元测试 --> Code Review --> 功能测试 --> 性能测试 --> 上线 --> 运维、Bug 修复 --> 测试上线 --> 退休下线

几种蓝牙定位方案对比,蓝牙定位方案无处不在-新导智能

感情迁移 提交于 2020-08-17 15:22:37
之所以会形成现在蓝牙无处不在的状况,与蓝牙定位方案有着重要联络,这四大定位方案分别是音频传输、数据传输、方位服务和设备网络。掩盖了现在热门的ToC及ToB领域,在ToC领域中,既包含了传统的手机、平板与电脑,还有正在迅猛发展的无线音频设备与轿车,还有每个人家中正在不断添加的IoT设备。 由于具备使用于IoT领域的优势,也让蓝牙在ToB领域也初步变得大有作为,在智能楼宇、智能工业、智慧城市中也同样扮演着不可或缺的角色。 蓝牙定位方案之音频传输领域: 作为蓝牙的第一大解决方案领域,跟着传输技术的完善,像LE Audio的推出,让该领域的运用领会迎来腾跃式的提升,未来消费市场关于真无线耳机、无线音频有着巨大的需求。 蓝牙定位方案之数据传输领域: 将会受益于物联网的迅猛发展,例如日子中的可穿戴设备与各种传感器,医疗领域的健康监测设备。别的,如上文中提到的电子设备的配件,如鼠标、键盘、触控板均已初步了无线化遍及。 蓝牙的室内导航功用也可补偿现在室内定位的痛点。一起在物流领域中,蓝牙技术还在推进用于资产和库存寻找的实时方位服务解决方案。 依据ABI研讨的成果,到时蓝牙方位服务将会掩盖18亿部手持设备,包含手机和平板电脑,蓝牙方位服务将遍及全球用户。蓝牙个人标签设备以及库存寻找标签设备的出货量将会抵达1.3亿,其间包含钥匙,钱包等等。 蓝牙定位方案之设备网络领域: 在未来的添加空间也将十分迅猛

一文详解微服务架构

谁都会走 提交于 2020-08-17 15:20:09
本文将介绍微服务架构和相关的组件,介绍他们是什么以及为什么要使用微服务架构和这些组件。本文侧重于简明地表达微服务架构的全局图景,因此不会涉及具体如何使用组件等细节。 为了防止不提供原网址的转载,特在这里加上原文链接: https://www.cnblogs.com/skabyy/p/11396571.html 要理解微服务,首先要先理解不是微服务的那些。通常跟微服务相对的是单体应用,即将所有功能都打包成在一个独立单元的应用程序。从单体应用到微服务并不是一蹴而就的,这是一个逐渐演变的过程。本文将以一个网上超市应用为例来说明这一过程。 最初的需求 几年前,小明和小皮一起创业做网上超市。小明负责程序开发,小皮负责其他事宜。当时互联网还不发达,网上超市还是蓝海。只要功能实现了就能随便赚钱。所以他们的需求很简单,只需要一个网站挂在公网,用户能够在这个网站上浏览商品、购买商品;另外还需一个管理后台,可以管理商品、用户、以及订单数据。 我们整理一下功能清单: 网站 用户注册、登录功能 商品展示 下单 管理后台 用户管理 商品管理 订单管理 由于需求简单,小明左手右手一个慢动作,网站就做好了。管理后台出于安全考虑,不和网站做在一起,小明右手左手慢动作重播,管理网站也做好了。总体架构图如下: 小明挥一挥手,找了家云服务部署上去,网站就上线了。上线后好评如潮,深受各类肥宅喜爱

Mobility Express初始化和升级

徘徊边缘 提交于 2020-08-17 13:06:57
第一部分:设备初始化 设备开机上电: Enter Administrative User Name ( 24 characters max): lcj Enter Administrative Password ( 3 to 24 characters): **************** Re -enter Administrative Password : **************** System Name [Cisco_6c:af:c0] ( 31 characters max): ME- WLC Enter Country Code list (enter ' help ' for a list of countries) [US]: Configure a NTP server now ? [YES][no]: no Configure the system time now ? [YES][no]: yes Enter the date in MM/DD/YY format: 03 / 24 / 20 Enter the time in HH:MM:SS format: 15 : 52 : 30 Enter timezone location index (enter ' help ' for a list of timezones): help 1 . (GMT

阿里云引领云原生进化 | 云原生生态周报 Vol. 60

拥有回忆 提交于 2020-08-17 10:43:35
作者 | 王思宇、汪萌海、李鹏 业界要闻 阿里云引领云原生进化,智能、互联、可信三位一体 阿里巴巴致力于为数字经济构建智能、互联、信任三位一体的创新基础设施,引领云原生进化新阶段。反观阿里云容器服务团队近期在 AI、边缘、机密计算三个领域的开源新动态,与智能、互联、信任的方向一一对应。 Chaos Mesh 项目加入 CNCF sandbox Chaos Mesh提供针对Kubernetes上复杂系统的故障注入方法,并涵盖了Pod,网络,文件系统甚至内核中的故障。 阿里云在 KubeCon 2020 峰会上展示什么大杀器? KubeCon 2020 中国站,阿里云容器服务负责人易立会在《云原生,数字经济技术创新基石》的演讲中,分享阿里云原生如何助力数字技术抗“疫”,阐述阿里云对云原生操作系统的思考,同时详解阿里云 ACK Pro、ASM、ACR EE、ACK[ @Edge ](/Edge ) 四款企业级容器新品。 上游重要进展 make cadvisor metrics set configurable in kubelet Kubelet 支持可配置的 cadvisor metrics set。 Pod resource metrics 为 Pod resource 增加更通用的 metrics 统计。 Add cronjob controller v2 新增 CronJob