概述

未匹配的标注
本文档最新版为 3.x,旧版本可能放弃维护,推荐阅读最新版!

网络

前言: micro network 是一个全球性的微服务网络

micro network 是一个 开放的微服务网络.

概述

协作开发的力量主要局限于组织内值得信赖的环境. 这些平台通过添加的每一项新服务, 可释放令人难以置信的生产力和复合价值. 它们提供了始终有效的运行时和已知的开发人员工作流, 供工程师协作处理. 这在组织之外基本上很难实现.

micro network 希望使用共享的微服务全局网络解决此问题.

内容

开始

以下是入门的快速指南.

安装

来自源

go get github.com/micro/micro/v2

Docker 映像

docker pull micro/micro

最新版本二进制文件

# MacOS
curl -fsSL https://raw.githubusercontent.com/micro/micro/master/scripts/install.sh | /bin/bash

# Linux
wget -q  https://raw.githubusercontent.com/micro/micro/master/scripts/install.sh -O - | /bin/bash

# Windows
powershell -Command "iwr -useb https://raw.githubusercontent.com/micro/micro/master/scripts/install.ps1 | iex"

连接

启动 micro 并连接到网络

micro server --peer

查询

加入后, 您应该能够看到网络上的其他节点, 服务和路由.

# Proxy all calls through the network
export MICRO_PROXY=go.micro.network

# List nodes
micro network nodes

# List services
micro network services

# List routes
micro network routes

# Peer graph
micro network graph

架构

该网络是基于 micor 和其他等现有开源技术开发的全球分布式网络. 它为大规模协作服务开发提供了核心要求. 这包括通用通信协议, 服务发现系统, 安全治理, 服务运行时和资源交换模型.

高级

在高级别上, 我们使用开源的 micro 工具包作为互联网覆盖网络的基础和微服务平台. 每个用户运行一个本地节点, 该节点提供对网络的访问, 运行服务的运行时, 本地的 http api 网关和 web 浏览器.

Architecture

未来此设计将包括自动数据同步和长期存储备份.

特性

该网络具有具有高带宽主干的分布式运行时. 网络本身提供发现, 治理和运行时. 设计目标是无论你投入什么资源, 你都会在网络上重新分布. 默认情况下它是全局的和共享的. 您可以使用令牌购买更多资源, 但还可以为向服务发出的任何请求获取令牌.

Architecture

网络是渐进的, 我们的目标是达到 1B 节点, 网络本身运行的服务超过 10 倍.

服务

网络提供微服务运行时. 每个服务都可以用作下一个服务构建基块. 这种分层允许在数百个其他服务的基础上创建独特的服务. 这是我们给大众带来的 Google, Netflix, Uber 等使用的微服务架构模式.

Architecture

开发人员为网络提供服务, 并相互构建工作.

身份

大多数被引导的网络都需要某种形式的身份系统. 其中许多从使用公钥/私钥对的基级非对称加密开始. 虽然我们将寻找使用这些, 我们认为这个系统是不够的. 任何人都可以参与到网络中来, 任何人都可以生成公钥/私钥对. 坏人可能会循环这些并进行 DDOS 破坏网络.

我们的建议是两层标识系统, 将第 1 层作为公钥/私钥对(可能使用 SPIFFE)和第 2 层作为基于信誉的评分系统, 随着时间的推移, 该系统巩固了您在网络中的声誉和可信身份. 您在网络中存在和参与的时间越长, 我们就越有可能将您识别为受信任的一方. 新参与者将获得一些基本级别的访问权限, 但必须付费参与或在网络上停留足够长的时间才能获得进一步访问.

身份系统可能如下

  • 第 0 层 - 连接到网络的节点
  • 第 1 层 - 向网络提供服务的应用
  • 第 2 层 - 基于节点和服务的声誉评分

演化

本质上没有系统是静态的, 因此我们不应期望任何技术基础结构或软件保持静态. 我们认为进化软件远远优于任何其他软件, 原则上需要通过它运行的基础运行时来推广. micro network 将是一个进化系统, 它要求运行它的所有服务也以这样的方式运行.

软件将从其公共来源表单下载. 然后它将在同一位置生成并运行. 对源的更新将导致定期生成正在运行的服务的新版本. 以前的实例化将终生保留, 或直到它们因任何不期望的原因而亡. 这就是进化, 我们相信不断演进是软件交付最有力的方法.

运行时

虽然我们的主要重点是为微服务提供全球分布式网络, 但如果没有部署软件的方法, 就无法完全实现这一点. 在创建进化系统的情况下, 我们提供支持此开发方法的运行时非常重要. micro rutime 是一个与网络本身紧密耦合的过程管理系统, 能够从源代码运行应用程序.

开发人员不再需要关注打包和传输其代码. 如果它存在于公共存储库中, 则可以将其部署到 micro network 中. 我们将主要希望通过 GitHub 支持 Git 作为真实的源头. 这允许任何人运行任何已经存在在网络上的副本, 但它也创造了一个完全围绕信任级别的 开源服务.

除此之外, 我们期望在 wasm (web 程序集) 上实现标准化, 这使我们能够为支持 wasm 编译的任何语言提供通用运行时. 我们可能在早期提供基本语言检测以自动编译二进制文件. 消除开发人员传输软件的另一个中间步骤.

治理

虽然我们可以提供一个进化网络和一个支持这种系统的运行时, 但这样的系统不太可能是独立维持的. 平台由运营商管理, 每个系统本质上都有某种形式的治理. micro network 也不例外.

从多年的平台管理中吸取了教训, 很明显, 我们不希望人工参与按 1B 节点的顺序管理某些内容. 可能提供 10 倍以上的服务. 即使管理任务分配给节点所有者 (这违背了我们最终的目的), 也不可能大规模地执行此类协调. 因此我们所开发的制度必须实现自治.

micro network 将包括通过自动化驱动的自治. 任何人类都参与指挥服务的位置, 或有能力关闭它们. 所有服务和网络本身的治理机制都将在代码中, 它将是一个在网络上运行的服务. 它还将是任何人都可以看到的代码和贡献的开源服务.

与任何其他服务一样, 这个系统将是可进化的.

网络

就 micro 而言, “network” 是一个重载术语, 既指由提供计算的节点或对等体组成的底层系统, 也指用于发现和相互通信的服务的叠加通信系统.

在这种情况下, 我们将与服务层网络进行交互. 提供给开发人员的微型网络由四部分组成; 注册表, 传输, 代理和客户端/服务器. 有关详细信息, 可以在 Go Micro 中找到这些组件.

注册表为网络中的应用程序提供了服务发现机制. 将此视为 DNS, 但以一种针对瞬态系统进行自我描述的方式构建. 我们的假设是, 开发人员不必离开网络来了解服务是为什么而构建的, 并且网络本身将存在任意数量的高失败率的原型. 因此我们需要一个系统来描述服务的全部和死节点的过期, 以防止各种故障模式.

传输提供了一个通用的同步通信系统. 理想情况下, 这是抽象的, 因此开发人员不必担心协议是什么. 在我们看来, 大多数框架和库都为突出的生态系统提供了丰富的 http 支持. 我们希望启用此功能, 同时在封装之下提供高效的二进制协议.

代理是异步通信系统. 它允许向数目不详的感兴趣方发布消息. 在某些情况下, 可能没有订阅者, 在这种情况下, 我们需要考虑未来的兴趣和潜在的短期存储和访问. 基于事件的编程成为网络的核心租户至关重要. 这可能还促进了一个功能编程模型, 该模型将是网络的本机模型.

客户端/服务器会抽象出注册表, 传输和代理, 以便从开发的角度来看, 剩下的只是对域本身的关注. 理想情况下服务间通信应更多地视为高级域驱动设计, 以后应考虑基于流的编程.

网络封装了分布式系统通信的底层细节, 并允许开发人员专注于重要内容.

协作

为运行应用程序提供环境是不够的. 此函数已存在许多平台. 个人可以使用云托管来执行此操作. 正在构建网络以运行分散的应用程序 (dApps). 这一切都很好, 但在基本级别只是计算, 访问资源.

更有用的是专注于 协作. 组织创建单个云托管帐户, 作为其工程师和团队构建软件的可信环境, 然后成为统一的产品. 他们不必担心是否可以信任使用它的其他团队或工程师. 他们不必担心服务消失, 甚至从上层开始构建一切. 独立工作的团队会提供其他团队可以访问的服务. 这成为新应用程序的基础, 他们不再需要重建它的基础. 随着每次新服务的增加, 它们的发展速度都会提高. 新产品可以快速构建, Amazon, Facebook, Google, Uber 等公司都展示了新产品的长期复合价值.

协作是关键. 这必须是我们关注的重中之重. 因为我们专注于微服务开发. 我们提供网络中的构建基块, 并推动协作软件开发的理念, 以便我们个人能够共同构建向组织外部不存在的东西. 这是一个机会, 以 Google 和其他公司的规模, 在没有任何中央中介或需要在一家公司工作协调努力.

协作将是我们的中心重点, 不是计算, 不是存储, 也不是奇异的应用程序, 而是网络共同构建的多应用程序服务.

价值交换

价值交换是什么意思? 仅仅为协作开发提供环境是不够的. 我们需要某种方式来奖励那些参与网络的人, 并提供给网络本身的资源或服务.

价值交换基本上是交换一些 东西 以换取一些 价值 的想法. 在我们的例子中, 我们将交换 资源, 用于网络 运行时 或服务. 资源可以通过运行时, 实际运行服务的能力或某种形式的货币支付来计算提供给网络. 资源将在网络中获得量化值, 并使用 api 令牌 抽象为本机交换方法.

Api 令牌将作为实用程序令牌, 它们将具有生存期, 如果用户参与网络或进行货币付款以获取它们, 则可以生成它们. 可以刷新过期的令牌.

我们期望令牌成为微网络中资源的本机交换方法, 但令牌的值将根据网络大小进行自我调整. 网络的值基于参与者, 资源和服务的数量, 而不是令牌本身.

经济学

构建这样的架构在理论上是好的, 但实际上需要网络效应来推动它的使用, 成长和茁壮成长的能力. 仅仅创建一个开放的网络, 要求开发人员在网络中运行对等方或做出贡献是不够的, 必须有一些经济激励才能成为其中的一部分.

这就是 代币经济学 发挥作用的地方. 向网络规模和/或服务规模提供资源的人员应给予相应的奖励. 我们的目标是将一个本机令牌化交易系统构建到网络中, 通过交换服务令牌来提供此资源使用模型.

以下是 代币经济学 的一个很好的解释.

术语表

  • Network- 是整个沟通和协调系统
  • Backbone- 是核心公共高带宽主网本身
  • Super Node- 是运行网络主干的主机
  • Peer Node- 是一个主机,在网络中运行服务
  • Service- 是一个在网络中运行并提供一些实用程序的过程
  • Token- 是一种经济激励,用于换取服务使用

发行版本

拉取最新最新版本的 micro

贡献

加入 Slackreddit 社区进行讨论


本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
taadis
讨论数量: 0
发起讨论 只看当前版本


暂无话题~