mesh

10个微服务架构设计的最佳实践

半城伤御伤魂 提交于 2020-09-26 12:27:36
10个微服务架构设计的最佳实践 微服务极大的改变了服务端引擎的架构方式。微服务不是一个单一的巨型的用来托管应用程序所有业务逻辑的代码库,而是反映了分布式系统模型,在该模型中,一组应用程序组件协同工作来满足业务需求。通过遵循十项基本的微服务最佳实践,你可以实现一个高效的微服务生态系统,从而避免不必要的架构复杂性。 微服务架构的收益 当从单体应用正确的迁移到微服务架构的时候,可以获得以下收益: 你可以根据自己的意愿选择一门语言开发微服务,按照自己的节奏独立发布它,并独立扩展。 组织中的不同团队可以独立的拥有自己特定的微服务,并且随着并行开发以及重用的增加,产品发布的时间会更快 。 可以更好的隔离故障,因为发生在特定微服务中的错误会在对应的服务中被处理掉,因此不会影响到生态系统中的其他服务。 但是,如果在构建微服务时未遵循正确的原则,则最终可能会陷入像纠缠在一起的意大利面一样的状态。 这让维护变得非常困难,因为这需要不同的团队一起协作来做变动,发布或者实现容错。 充分利用微服务是一门科学并且需要一些刻意练习。以下微服务最佳实践和设计原则将帮助你构建松散耦合,分布式和优化的微服务,以实现最佳价值。 10个微服务最佳实践 1.单一责任原则 就像代码中的类一样,它仅仅在单个原因情况下改变,微服务也是采用类似的方式建模。构建可能会改变一个以上的业务这种臃肿的服务是一个坏的实践。 2

Unity性能优化技巧

谁说胖子不能爱 提交于 2020-09-25 10:54:27
最近看了B站Uinty官方有关性能优化技巧的视频,自己做一些整理。 视频链接: Unite Now - (中文字幕)性能优化技巧(上) Unite Now - (中文字幕)性能优化技巧(下) 堆栈(Stack)和堆积(Heap) 我们先来看下Unity内存中重要的两部分,堆栈和堆积,因为只有了解了它们,我们才能知道应该如何优化内存,提高性能。 堆栈: 堆栈是内存中存储 函数 和 值类型 的地方。 例如我们调用一个函数A,会将这个函数体与函数收到的参数放入到堆栈中,若在函数A中调用函数B,同样会把函数B存放到堆栈中。当函数B运行结束,会将其从堆栈中移除,然后当A运行结束,把A从堆栈中移除。 因此我们在看Debug信息的时候,就会发现Log里面能够做到一层层的方法回溯,方便我们查看整体的调用过程,这也就是 堆栈回溯 。 由于是堆栈的结构,因此不会遇到碎片化或是垃圾收集(GC)的问题。但是可能会碰见堆栈溢出的问题,比如调用了太多的函数导致一直push东西进堆栈,占据越来越多的内存空间,导致 堆栈溢出 。 堆积: 堆积是内存中另一个区域,要比堆栈大,我们将所有的 引用类型 存放在这。通常我们每创建一个新的对象,会在堆积中找到下一个足够存放的空位置,将其存储。但是当我们销毁对象后, 内存空间不会马上释放出来 ,而是标记成未使用,之后垃圾收集器会释放这部分空间。 对象实例化和摧毁的过程其实很慢

开放下载!《无需从0开发 平头哥教你1天上手蓝牙Mesh应用解决方案》

送分小仙女□ 提交于 2020-09-24 02:34:04
当你疲惫了一天,回到家里,点点手机灯就亮了,再唤醒天猫精灵放首歌,这样智能的家,恐怕这是很多人梦寐以求的吧。而蓝牙 MESH 智能灯,是智能家居系统中最基础的设施。蓝牙 MESH 智能灯是如何实现轻松、高效地控制灯的状态呢?本书将以智能灯的开关应用开发为例指导读者进行 MESH 开发。 此外,本书还介绍如何触发模拟智能开关,用来控制智能灯的开关状态;如何进行MESH Light的功能演示;如何实现常用的灯控应用场景…还等什么?《无需从0开发 平头哥教你1天上手蓝牙Mesh应用解决方案》现已开放下载啦,即刻收藏阅读吧! 点击免费下载 《无需从0开发 平头哥教你1天上手蓝牙Mesh应用解决方案》>>> 通过本书的指引,开发者可以了解业内性能领先的Mesh协议栈、智能开关开发指南、智能灯控开发指南…快速上手蓝牙Mesh应用方案,解决10多个多场景配网难题。 也可在PC端打开 https://developer.aliyun.com/topic/download?id=717 下载 —目录— 点击查看 蓝牙 Mesh 网络及 SDK 概述>>> 点击查看 蓝牙 Mesh SDK 快速上手>>> 点击查看 蓝牙 Mesh 标准 Model 开发指南>>> 点击查看 蓝牙 Mesh 私有 Model 开发指南>>> 点击查看 蓝牙 Mesh 开关开发实例 >>> 点击查看 蓝牙 Mesh

技术人的灵魂 3 问,阿里工程师如何解答?

隐身守侯 提交于 2020-08-20 02:55:25
作者 | 氐宿 阿里云高级前端技术专家 导读: 在业务团队做事的工程师摸爬滚打了一段时间后,一定会有所疑问。团队同学在最初的一段时间都提出这样的疑惑:如何在业务中发现有技术价值的问题?发现问题后如何思考和发起再到解决?最后的技术结果跟业务结果如何衔接?很多时候我们听别人说“思考是不够的/要多思考”,其实都是在说这几点。接下来,阿里高级前端技术专家氐宿谈一谈遇到这三个问题时,他是如何解决的? 如何在业务中发现有技术价值的问题? 一位科学家一生可用于研究的时间极其有限,然而,世界上的研究主题却多得数不清。如果只因为稍微觉得有趣就选为研究主题,将在还没来得及做真正重要的事时,一生就结束了。 ——利根川进 其实要解答这个问题之前,我们要理解一个概念,什么是有价值的问题?议题度高和解答质高的问题我理解就是有价值的问题, 比较通俗的理解就是这个问题是否存在,当前要解决这个问题的必要性够不够,问题对应的解决方案可行性高不高 。如果要在业务里发现这种问题,首先要理解业务战略、打法和定位。那如何才能把这个前置信息做好,对工程师来说是一个比较大的挑战。 首先工程师其实大多数都是从事一线开发,对业务理解可能仅限于自己在做的事情。很多信息都是别人过滤了五六手之后的信息,得到的可能就是一个任务和为什么做这个任务。相对比之下肯定不如制定战略的人懂得战略背后的意义,信息也是不对等的。所以 首先我们要收集信息

阿里开源分布式限流框架 -Sentinel Go 0.3.0 发布,支持熔断降级能力

本小妞迷上赌 提交于 2020-08-19 20:49:29
作者 | 宿何 阿里巴巴高级开发工程师 Sentinel 是阿里巴巴开源的,面向分布式服务架构的流量控制组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统自适应保护等多个维度来帮助开发者保障微服务的稳定性。Sentinel 承接了阿里巴巴近 10 年的 双11 大促流量的核心场景,例如秒杀、冷启动、消息削峰填谷、集群流量控制、实时熔断下游不可用服务等,是保障微服务高可用的利器,原生支持 Java/Go/C++ 等多种语言,并且提供 Istio/Envoy 全局流控支持来为 Service Mesh 提供高可用防护的能力。 近期, Sentinel Go 0.3.0 正式发布,带来了 熔断降级特性支持 ,可以针对 Go 服务中的不稳定调用进行自动熔断,避免出现级联错误/雪崩,是保障服务高可用重要的一环。结合 Sentinel Go 已经提供的 gRPC、Gin、Dubbo 等框架组件的适配模块,开发者可以快速在 Web、RPC 调用层面配置熔断降级规则来保护自身服务的稳定性。同时 0.3.0 版本也带来了 etcd 动态数据源模块,开发者可以方便地通过 etcd 来动态调整熔断降级策略。 Sentinel Go 项目地址: https://github.com/alibaba/sentinel-golang 为什么需要熔断降级 一个服务常常会调用别的模块

开放下载!《无需从0开发 平头哥教你1天上手蓝牙Mesh应用解决方案》

匆匆过客 提交于 2020-08-19 20:31:27
当你疲惫了一天,回到家里,点点手机灯就亮了,再唤醒天猫精灵放首歌,这样智能的家,恐怕这是很多人梦寐以求的吧。而蓝牙 MESH 智能灯,是智能家居系统中最基础的设施。蓝牙 MESH 智能灯是如何实现轻松、高效地控制灯的状态呢?本书将以智能灯的开关应用开发为例指导读者进行 MESH 开发。 此外,本书还介绍如何触发模拟智能开关,用来控制智能灯的开关状态;如何进行MESH Light的功能演示;如何实现常用的灯控应用场景…还等什么?《无需从0开发 平头哥教你1天上手蓝牙Mesh应用解决方案》现已开放下载啦,即刻收藏阅读吧! 点击免费下载 《无需从0开发 平头哥教你1天上手蓝牙Mesh应用解决方案》>>> 通过本书的指引,开发者可以了解业内性能领先的Mesh协议栈、智能开关开发指南、智能灯控开发指南…快速上手蓝牙Mesh应用方案,解决10多个多场景配网难题。 也可在PC端打开 https://developer.aliyun.com/topic/download?id=717 下载 —目录— 点击查看 蓝牙 Mesh 网络及 SDK 概述>>> 点击查看 蓝牙 Mesh SDK 快速上手>>> 点击查看 蓝牙 Mesh 标准 Model 开发指南>>> 点击查看 蓝牙 Mesh 私有 Model 开发指南>>> 点击查看 蓝牙 Mesh 开关开发实例 >>> 点击查看 蓝牙 Mesh

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

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