一 什么是Micro?

Micro是一个微服务生态系统,致力于提供产品,服务和解决方案,以实现现代软件驱动型企业的创新。我们计划成为任何与微服务相关的事实资源,并期待公司能够利用这项技术为自己的业务。从早期的原型开始一直到大规模的生产部署。

我们已经看到行业发生根本性转变。摩尔定律是有效的,我们每天都能获得越来越多的计算能力。但是,我们无法完全获取这种新的能力。现有的工具和开发实践在这个新时代并没有scale。没有提供开发人员从单一代码库转向更高效的设计模式的工具。大多数公司不可避免地以单一设计达到收益递减,必须进行大规模的研发再造。 Netfix,Twitter,Gilt和Hailo都是最好的例子。所有最终都建立了自己的微服务平台。

我们的愿景是提供基本的构建模块,使任何人都可以轻松采用微服务。

二 go-micro简介

Go Micro是一个插件化的基础框架,基于此可以构建微服务,Micro的设计哲学是可插拔的插件化架构

在架构之外,它默认实现了consul作为服务发现(2019年源码修改了默认使用mdns),通过http进行通信,通过protobuf和json进行编解码

Micro 是一个用于构建和管理分布式系统的系统.

Micro 的主要组件如下:

  • 运行时: 用于管理服务包括 auth, config, discovery, networking 的运行时环境.
  • 框架: 用于编写要在运行时运行的服务的 Go 框架.
  • 客户端: 多语言客户端, 使其他程序能够访问微服务.

三 go-micro的主要功能

  • 服务发现:自动服务注册和名称解析。服务发现是微服务开发的核心。当服务A需要与服务B通话时,它需要该服务的位置。默认发现机制是多播DNS(mdns),一种零配置系统。您可以选择使用SWIM协议为p2p网络设置八卦,或者为弹性云原生设置设置consul
  • 负载均衡:基于服务发现构建的客户端负载均衡。一旦我们获得了服务的任意数量实例的地址,我们现在需要一种方法来决定要路由到哪个节点。我们使用随机散列负载均衡来提供跨服务的均匀分布,并在出现问题时重试不同的节点
  • 消息编码:基于内容类型的动态消息编码。客户端和服务器将使用编解码器和内容类型为您无缝编码和解码Go类型。可以编码任何种类的消息并从不同的客户端发送。客户端和服务器默认处理此问题。这包括默认的protobuf和json
  • 请求/响应:基于RPC的请求/响应,支持双向流。我们提供了同步通信的抽象。对服务的请求将自动解决,负载平衡,拨号和流式传输。启用tls时,默认传输为http / 1.1或http2
    Async Messaging:PubSub是异步通信和事件驱动架构的一流公民。事件通知是微服务开发的核心模式。启用tls时,默认消息传递是点对点http / 1.1或http2
  • 可插拔接口:Go Micro为每个分布式系统抽象使用Go接口,因此,这些接口是可插拔的,并允许Go Micro与运行时无关,可以插入任何基础技术
    插件地址:https://github.com/micro/go-plugins

四 go-micro通信流程

Server监听客户端的调用,和Brocker推送过来的信息进行处理。并且Server端需要向Register注册自己的存在或消亡,这样Client才能知道自己的状态
Register服务的注册的发现,Client端从Register中得到Server的信息,然后每次调用都根据算法选择一个的Server进行通信,当然通信是要经过编码/解码,选择传输协议等一系列过程的

如果有需要通知所有的Server端可以使用Brocker进行信息的推送,Brocker 信息队列进行信息的接收和发布

五 go-micro核心接口

go-micro之所以可以高度订制和他的框架结构是分不开的,go-micro由8个关键的interface组成,每一个interface都可以根据自己的需求重新实现,这8个主要的inteface也构成了go-micro的框架结构

Go Micro介绍与入门相关推荐

  1. 干货|以太坊全景介绍及入门学习路径(分享实录)

    2019独角兽企业重金招聘Python工程师标准>>> 本次分享主要是针对以太坊的基本概念的介绍,属于入门级别,主要目的是帮助大家快速认识和了解以太坊. 自我介绍 大纲 1 交易所那 ...

  2. .NET平台开源项目速览(6)FluentValidation验证组件介绍与入门(一)

    原文:.NET平台开源项目速览(6)FluentValidation验证组件介绍与入门(一) 在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,给大家初步介绍了一下F ...

  3. RStudio介绍及入门

    RStudio介绍及入门 1 R Studio 介绍 2 函数与对象 2.1 函数 2.2 数据输入 2.3 元素引用 3 R语言绘图 4 数据保存 5 学习建议 6 唠唠叨叨 Hello, 这里是行 ...

  4. Caliburn.Micro 杰的入门教程3,事件和参数

    Caliburn.Micro 杰的入门教程1(翻译) Caliburn.Micro 杰的入门教程2 ,了解Data Binding 和 Events(翻译) Caliburn.Micro 杰的入门教程 ...

  5. Dubbo系列(一)dubbo介绍和入门

    Dubbo系列(一)dubbo介绍和入门 学习Dubbo 之前,先了解一下这几个问题: Dubbo是什么? 互联网发展的背景 Dubbo介绍 Dubbo的优势在哪里? 了解了dubbo之后,让我们从零 ...

  6. 7-Zip 解/压缩软件的介绍及入门使用

    7-Zip 解/压缩软件的介绍及入门使用 7-Zip中文官方网站 百度网盘地址: 链接:https://pan.baidu.com/s/16cO-qbNi2aINiKa8kOibFQ 提取码:CSDN ...

  7. Poco的介绍和入门教学

    Poco的介绍和入门教学 前言 前面我们已经介绍了基于图像识别的测试框架Airtest,通过图像识别,已经可以编写大部分的测试脚本.但是在某些特殊情况下,例如对于游戏或App里的动态元素,通过图像识别 ...

  8. mysql通用mapper_通用mapper的介绍和入门使用

    通用mapper的介绍和入门使用 简介 通用Mapper都可以极大的方便开发人员.可以随意的按照自己的需要选择通用方法,还可以很方便的开发自己的通用方法. 极其方便的使用MyBatis单表的增删改查. ...

  9. 单片机类型介绍和入门单片机

    单片机类型介绍和入门单片机 单片机是一种集成电路芯片,通常包含一个或多个中央处理器(CPU).存储器.输入输出端口(I/O)和计时器等部件,可以完成各种控制和数据处理任务.由于单片机内部集成了许多电子 ...

最新文章

  1. 微服务架构必备的几点知识
  2. ftl不存在为真_LTL和FTL货运之间有什么区别?
  3. django rest framework mixins小结
  4. ACM模板--邻接矩阵 有向图 搜索算法
  5. 怎样将outlook express中的邮件保留在原邮箱
  6. MicroPython开发板:TPYBoard v102 播放音乐实例
  7. vb 数组属性_VB中菜单编辑器的使用讲解及实际应用
  8. Apache Wicket 7.2.0发布
  9. 【PHP】PHP include()和require()方法的区别
  10. tiptop对接泛微OA详细步骤
  11. java服务器向客户端发消息_socket 服务器向指定的客户端发消息
  12. 使用JMeter进行简单的app接口测试
  13. 万用表测量二极管方法
  14. 如何实现从CTO到CEO的跨越(红色标注是我关注的点)
  15. 半年卖出4.6亿只粽子,老字号的“想象空间”有多大?
  16. HC-SR04超声波测距模块
  17. 清明假期搞了个“精灵球“
  18. 为何20年九江大桥一撞就散 而50年武汉大桥无恙
  19. 第8章:下半部和推后执行的工作
  20. 【电气专业知识问答】问:调节器用TV熔丝熔断后的现象是什么?如何分析与处理?

热门文章

  1. 【应急】应急信息“一张图”,福建省是这样用的
  2. 江苏大学正版Windows和Office全家桶--UJS微软正版化服务平台
  3. teamviewer14 去商用途提示
  4. 凸优化之共轭函数(二)
  5. Android 巧用 flexboxLayout 布局
  6. 1002-过河卒-洛谷-luogu-动态规划dp
  7. Semantic Segmentation: A thorough Review
  8. 如何使用vim来进行编辑文档和脚本
  9. 参赛邀请 | 第二届古汉语自动分析国际评测EvaHan(古汉语机器翻译)开始报名...
  10. 2016·中国计算机辅助设计与计算机图形学大会