GoMicro学习笔记 Micro和GoMicro

GoMicro学习笔记 专栏收录该内容
3 篇文章 0 订阅
  1. Micro是运行时工具集,而GoMicro则是后端服务框架。

Micro

  1. 如下图所示,micro类似于中间层的作用,手机,web等通过micro中相应的API,BOT,WEB等工具,调用gomicro框架中的服务
    在这里插入图片描述
  2. Micro Api主要功能在于将http请求转向到内部服务。即通过Micro Api将内部服务暴露给外部http请求。 List item
  3. Micro Proxy可以让服务客户端直接调用服务。与Mirco API不同的是,api主要是将rpc转成http形式给外部,而proxy则是只能使用rpc形式在这里插入图片描述

Go-Mirco

  1. 一个具体实例化的服务分为客户端和服务端。其中客户端主要用于发送RPC请求和广播,而服务端主要用于接收RPC请求和广播。
    在这里插入图片描述
  2. 需要五个组件来支撑收发rpc,即broker(异步通信组件)codec(数据编码组件)registry(服务注册组件)selector(客户端均衡器)transport(同步通信组件)
  3. 其中,codec用于将客户端请求的数据编码后给服务端,服务端收到消息后再解码得到数据进行处理。
  4. registry将服务进行注册(注册到注册中心),selector和registry一起协作,获取所要调用的服务的具体ip,从而发送请求。

各个组件的协作关系在这里插入图片描述

  1. 服务层在启动后会启动一个服务,服务会去调用register,将服务到注册中心进行注册。
  2. 之后客户端需要服务的时候,会先去启动selector,selector去registry中查询注册的服务,如果找不到则去注册中心处查找。
  3. 找到服务后会将相关信息换地给transport,transport将请求数据通过codec编码后传递到服务端,服务端反编码后处理数据。处理完后将数据编码后返回给客户端。
  4. broker则类似于上述的流程,不过中间又多了一层中间件。broker会将数据先给中间件(mq一类的),服务端从中间件获取推送的数据。
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
<p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;">go实战微服务</p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span style="font-family: arial, 宋体, sans-serif; margin: 0px; padding: 0px; color: #333333; font-size: 14px; text-indent: 28px;">分布式系统(</span><em style="font-family: arial, 宋体, sans-serif; margin: 0px; padding: 0px; color: #333333; font-size: 14px; text-indent: 28px;">distributed system</em><span style="font-family: arial, 宋体, sans-serif; margin: 0px; padding: 0px; color: #333333; font-size: 14px; text-indent: 28px;">)是建立在网络之上的软件</span><span style="font-family: arial, 宋体, sans-serif; margin: 0px; padding: 0px; color: #333333; font-size: 14px; text-indent: 28px;">系统。正是因为软件</span><span style="font-family: arial, 宋体, sans-serif; margin: 0px; padding: 0px; color: #333333; font-size: 14px; text-indent: 28px;">的特性,所以分布式系统具有高度的内聚性</span><span style="font-family: arial, 宋体, sans-serif; margin: 0px; padding: 0px; color: #333333; font-size: 14px; text-indent: 28px;">透明性。因此,网络分布式系统之间的区别更多的在于高层软件</span><span style="font-family: arial, 宋体, sans-serif; margin: 0px; padding: 0px; color: #333333; font-size: 14px; text-indent: 28px;">(特别是操作系统</span><span style="font-family: arial, 宋体, sans-serif; margin: 0px; padding: 0px; color: #333333; font-size: 14px; text-indent: 28px;">),而不是硬件。</span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;">在一个分布式系统中,一组独立的计算机展现给用户的是一个统一的整体,就好像是一个系统似的。系统拥</p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;">有多种通用的物理逻辑资源,可以动态的分配任务,分散的物理逻辑资源通过计算机网络实现信息交换。系统中存在一个以全局的方式管理计算机资源的分布式操作系统。通常,对用户来说,分布式系统只有一个模型或范型。在操作系统之上有一层软件中间件(middleware)负责实现这个模型。一个著名的分布式系统的例子是万维网(World Wide Web),在万维网中,所有的一切看起来就好像是一个文档(Web页面)一样。 [1] </p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;">在计算机网络中,这种统一性、模型以及其中的软件都不存在。用户看到的是实际的机器,计算机网络并没有使这些机器看起来是统一的。如果这些机器有不同的硬件或者不同的操作系统,那么,这些差异对于用户来说都是完全可见的。如果一个用户希望在一台远程机器上运行一个程序,那么,他必须登陆到远程机器上,然后在那台机器上运行该程序。 [1] </p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;">分布式系统计算机网络系统的共同点是:多数分布式系统是建立在计算机网络之上的,所以分布式系统与计算机网络在物理结构上是基本相同的。 [1] </p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;">他们的区别在于:分布式操作系统的设计思想网络操作系统是不同的,这决定了他们在结构、工作方式功能上也不同。网络操作系统要求网络用户在使用网络资源时首先必须了解网络资源,网络用户必须知道网络中各个计算机的功能与配置、软件资源、网络文件结构等情况,在网络中如果用户要读一个共享文件时,用户必须知道这个文件放在哪一台计算机的哪一个目录下;分布式操作系统是以全局方式管理系统资源的,它可以为用户任意调度网络资源,并且调度过程是“透明”的。当用户提交一个作业时,分布式操作系统能够根据需要在系统中选择最合适的处理器,将用户的作业提交到该处理程序,在处理器完成作业后,将结果传给用户。在这个过程中,用户并不会意识到有多个处理器的存在,这个系统就像是一个处理器一样。 [1] </p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;">内聚性是指每一个数据库分布节点高度自治,有本地的数据库管理系统。透明性是指每一个数据库分布节点对用户的应用来说都是透明的,看不出是本地还是远程。在分布式数据库系统中,用户感觉不到数据是分布的,即用户不须知道关系是否分割、有无副本、数据存于哪个站点以及事务在哪个站点上执行等。 </p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span class="sup--normal" style="margin: 0px 0px 0px 2px; padding: 0px 2px; font-size: 12px; line-height: 0; position: relative; vertical-align: baseline; top: -0.5em; color: #3366cc; cursor: pointer;"><br style="margin: 0px; padding: 0px;" /></span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"> </p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;">什么是微服务?</p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span class="ref" style="margin: 0px; padding: 0px;">维基上对其定义为:一种软件开发技术- 面向服务的体系结构(SOA)架构样式的一种变体,将应用程序构造为一组松散耦合的服务。在微服务体系结构中,服务是细粒度的,协议是轻量级的。</span></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;">微服务(或微服务架构)是一种云原生架构方法,其中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成。这些服务通常</p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;">● 有自己的堆栈,包括数据库数据模型;</p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;">● 通过REST API,事件流消息代理的组合相互通信;</p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;">● 它们是按业务能力组织的,分隔服务的线通常称为有界上下文。</p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;">尽管有关微服务的许多讨论都围绕体系结构定义特征展开,但它们的价值可以通过相当简单的业务组织收益更普遍地理解:</p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;">● 可以更轻松地更新代码。</p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;">● 团队可以为不同的组件使用不同的堆栈。</p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;">● 组件可以彼此独立地进行缩放,从而减少了因必须缩放整个应用程序而产生的</p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;">浪费成本,因为单个功能可能面临过多的负载。</p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><span class="sup--normal" style="margin: 0px 0px 0px 2px; padding: 0px 2px; font-size: 12px; line-height: 0; position: relative; vertical-align: baseline; top: -0.5em; color: #3366cc; cursor: pointer;"> </span></p>
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值