iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > GO >golang微服务指的是什么
  • 227
分享到

golang微服务指的是什么

2023-07-04 22:07:33 227人浏览 八月长安
摘要

这篇文章主要介绍“golang微服务指的是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Golang微服务指的是什么”文章能帮助大家解决问题。在golang中,微服务(或微服务架构)是一种软件架

这篇文章主要介绍“golang微服务指的是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Golang微服务指的是什么”文章能帮助大家解决问题。

在golang中,微服务(或微服务架构)是一种软件架构风格(技术),它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于Http的RESTful api);每个服务都围绕着具体业务进行构建,并且能够独立地部署到生产环境、类生产环境等。

什么是微服务

微服务(Microservices Architecture)是一种软件架构风格,面向服务的体系结构(SOA)架构样式的一种变体,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据上下文,选择合适的语言、工具对其进行构建。

微服务(或微服务架构)是一种云原生架构方法,其中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成。这些服务通常

  • 有自己的堆栈,包括数据库和数据模型;

  • 通过REST API,事件流和消息代理的组合相互通信;

  • 它们是按业务能力组织的,分隔服务的线通常称为有界上下文。

尽管有关微服务的许多讨论都围绕体系结构定义和特征展开,但它们的价值可以通过相当简单的业务和组织收益更普遍地理解:

  • 可以更轻松地更新代码。

  • 团队可以为不同的组件使用不同的堆栈。

  • 组件可以彼此独立地进行缩放,从而减少了因必须缩放整个应用程序而产生的浪费和成本,因为单个功能可能面临过多的负载。

我们为什么使用微服务?

这种架构有助于我们用各部分、小型模块描绘整个应用程序,使其更容易理解、开发测试;有助于我们将各个服务视为独立且又清晰指明其用途的服务。更进一步地,它有助于保持项目架构的一致性(最初设计的架构和实际开发完成的架构差别不大)。它还可以通过建立不同的独立团队来进行服务的部署和扩展,从而各团队能够并行地开发。在这个架构中重构代码更容易。它也支持连续交付和部署流程(CI/CD)。

为什么使用 go 构建微服务?

在深入研究这个问题之前。首先,我说一下 Golang 的优势。虽然 Golang 是一门新的语言,但是与其他语言相比,它有很多优势。用 Golang 编写的程序更加健壮。它们能够承受程序使用运行的服务构建的繁重负载。Golang 更适合多处理器系统和 WEB 应用程序。此外,它容易地与 GitHub 集成,管理非集中的代码包。微服务架构的用处大部分体现在当程序需要伸缩(Scalable)时。如果有一种语言可以完全符合标准,那么它就是 Golang。原因是它继承自 C-family 编程语言,用 Golang 编写的组件更容易与同一家族中其他语言编写的组件相结合。

尽管 Go 出身于 C-family,但它比 C / C ++更高效。 它语法更简单,有点像 python。它稳定语法, 自第一次公开发布以来,它没有太大变化,也就是说它是后向兼容的。与其他语言相比,这让 golang 占了上风。 除此之外,Golang 的性能比 Python 和 java 高出不少。锦上添花的是,它又像 C/C++ 简单的同时又易于阅读和理解,使它成为开发微服务应用的绝佳选择。

Golang中的微服务架构框架

下面,我们讨论一下可以用于微服务架构的框架。有以下些框架:

Go Micro

Go Micro 是目前为止我遇到的最流行的rpc框架。它是一个可插拔的RPC框架。Go Micro 为我们提供了以下功能:

  • 服务发现: 程序自动注册到服务发现系统

  • 负载均衡: 它提供了客户端负载均衡,这有助于平衡服务实例之间的请求

  • 同步通信: 提供 Request/Response 传输层

  • 异步通信: 具有内置的发布和订阅功能

  • 消息编码: 可以利用 header 中 Content-Type 进行编码和解码

  • RPC客户端/服务器端: 利用上述功能并提供构建微服务需要的接口

Go Micro 架构由三层组成。第一层抽象为服务层。第二层为 client-server 模型层。serrver 用于编写服务的块组成,而 client 为我们提供接口,其唯一目的是向 server model 中编写的服务发出请求。

第三层有以下类型的插件:

  • Broker: 在异步通信中为 message broker(消息代理)提供接口

  • Codec: 用于加密或解密消息

  • ReGIStry: 提供服务搜索功能

  • Selector: 在 register 上构建了负载均衡

  • Transport: Transport是服务与服务之间同步请求/响应的通信接口

它还提供了一个名为 Sidecar 的功能。Sidecar 使您能够集成以Go以外的语言编写的服务。它还为我们提供了grpc编码/解码、服务注册和HTTP 请求处理

GO Kit

Go Kit 是一个用于构建微服务的编程工具包。与 Go Micro不同,它是一个可以以二进制包导入的库。Go Kit 规则很简单。如下:

  • 没有全局变量

  • 声明式组合

  • 显式依赖

  • Interface as Contracts (接口合约)

  • 领域驱动设计DDD)

Go Kit 提供以下代码包:

  • Authentication 鉴权: BasicAuth 和 Jwt

  • Transport 协议: HTTP, gRPC 等

  • Logging 日志: 服务中的结构化日志接口

  • Metrics 度量: CloudWatch,Statsd, Graphite等

  • Tracing 分布式追踪: Zipkin and Opentracing

  • Service discovery 服务发现: Consul, Etcd, Eureka等

  • Circuitbreaker 限流熔断: Hystrix 在 Go 语言的实现

Go Kit 服务架构如下

Gizmo

Gizmo 是来自《纽约时报》的一个微服务工具包。它提供了将服务器守护进程和 pubsub 守护进程放在一起的包。它公开了以下包:

  • Server: 提供两个服务器实现: SimpleServer(HTTP)和 RPCServer(gRPC)

  • Server/kit: 基于Go Kit的实验代码包

  • Config 配置: 包含来自 JSON文件、Consul k/v 中的 jsON blob 或环境变量的配置功能

  • Pubsub: 提供用于从队列中发布和使用数据的通用接口

  • Pubsub/pubsubtest: 包含发布者和订阅者接口的测试实现

  • Web: 用于从请求查询和有效负载解析类型的外部函数

Pubsub包提供了处理以下队列的接口:

  • pubsub/aws: 用于 Amazon SNS/SQS

  • pubsub/GCp: 用于 Google Pubsub

  • pubsub/kafka: 用于 Kafka topics

  • pubsub/http: 用户 HTTP 推送

所以,在我看来,Gizmo 介于 Go Micro 和 Go Kit 之间。它不像 Go Micro 那样是一个完全的黑盒。同时,它也不像 Go Kit 那么原始。它提供了更高级别的构建组件,比如配置和 pubsub 包

Kite

Kite 是一个在 Go 中开发微服务的框架。它公开RPC client 和 Server 端代码包。创建的服务将自动注册到服务发现系统 Kontrol。Kontrol 是用 Kite 编写的,它本身就是一个 Kite service。这意味着 Kite 微服务在自身的环境中运行良好。如果需要将 Kite 微服务连接到另一个服务发现系统,则需要定制。这是我从列表中选择 Kite 并决定不介绍这个框架的重要原因之一。

关于“golang微服务指的是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网GO频道,小编每天都会为大家更新不同的知识点。

您可能感兴趣的文档:

--结束END--

本文标题: golang微服务指的是什么

本文链接: https://www.lsjlt.com/news/347794.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • golang微服务指的是什么
    这篇文章主要介绍“golang微服务指的是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“golang微服务指的是什么”文章能帮助大家解决问题。在golang中,微服务(或微服务架构)是一种软件架...
    99+
    2023-07-04
  • golang中什么是微服务
    在golang中,微服务(或微服务架构)是一种软件架构风格(技术),它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于H...
    99+
    2023-05-14
    微服务 go语言 Golang
  • 深入解析:Golang 微服务的本质是什么?
    Golang(即Go语言)作为一种快速、高效、易于学习的编程语言,越来越受到开发者的青睐,尤其在微服务领域中有着广泛的应用。本文将深入解析Golang 微服务的本质是什么,并提供具体的...
    99+
    2024-02-29
    golang 微服务 本质 go语言 网络编程 标准库
  • 微服务的APM是什么
    本篇内容介绍了“微服务的APM是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!### 1. APM?APM (Application P...
    99+
    2023-06-19
  • 微信小程序服务功能直达指的是什么
    这篇文章将为大家详细讲解有关微信小程序服务功能直达指的是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。微信小程序开放服务(功能)直达入口就在前天也就是9月28日,微信发文宣布服务(功能)...
    99+
    2023-06-05
  • 微博html5指的是什么意思
    小编给大家分享一下微博html5指的是什么意思,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!html有什么特点1、简易性:超级文本标记语言版本升级采用超集方式,从...
    99+
    2023-06-14
  • 云服务指的是什么
    这篇“云服务指的是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“云服务指的是什么”文章...
    99+
    2023-02-02
    云服务
  • golang指针用法是什么
    golang指针用法有:1、获取变量的地址,通过在变量名前加上&符号可以获取变量的内存地址;2、访问指针指向的值,通过在指针变量前加上*符号可以访问指针指向的值;3、创建指针变量,使用new关键字创建一个指定类型的零值指针变量;4、传递指针...
    99+
    2023-12-12
    Golang
  • Golang技术在微服务架构中的局限性是什么?
    go 语言在微服务架构中存在一些缺陷,包括:goroutine 泄漏可能导致内存消耗和性能问题。网络通信配置的复杂性限制了自定义和低级网络需求的灵活性。生态系统限制可能会限制对特定于域的...
    99+
    2024-05-10
    golang 微服务架构 python c++ 标准库
  • 微信挂夜指的是什么意思
    这篇文章主要为大家展示了微信挂夜指的是什么意思,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“微信挂夜指的是什么意思”这篇文章吧。微信挂夜是指微信号一直处于登录的状态,可以一整夜接受好友发送的消息。...
    99+
    2023-06-08
  • golang指针转换的方法是什么
    这篇文章主要介绍了golang指针转换的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇golang指针转换的方法是什么文章都会有所收获,下面我们一起来看看吧。一、指针的基本使用在Golang中,指针是...
    99+
    2023-07-05
  • linux abrtd服务指的是什么
    本篇内容主要讲解“linux abrtd服务指的是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux abrtd服务指的是什么”吧!linux abrtd是一个守护进程监控的应用程序崩...
    99+
    2023-07-05
  • goole play服务指的是什么
    这篇文章主要介绍了goole play服务指的是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。goole play服务是用来更新Google应用和Google Play提...
    99+
    2023-06-06
  • linux snmp服务指的是什么
    今天小编给大家分享一下linux snmp服务指的是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来...
    99+
    2023-03-06
    linux snmp
  • redis指的是什么服务器
    小编给大家分享一下redis指的是什么服务器,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!redis是什么服务器?Redis最常...
    99+
    2024-04-02
  • 云服务器指的是什么
    云服务器是一种提供可扩展、可弹性伸缩、高可用性和高性能的计算服务,可以快速、轻松地构建虚拟化的资源,同时满足不断增加的存储需求,从而支持大规模数据处理、计算和应用。 云服务器通常提供以下特点: 1.高可用性:云服务器可以提供高水平的数据保...
    99+
    2023-10-26
    指的是什么 服务器
  • 根服务器指的是什么
    根服务器(Root Server)是一组全球分布的13台服务器,它们存储着互联网域名系统(DNS)的根域名服务器数据库,负责将域名解...
    99+
    2023-06-11
    根服务器 服务器
  • proxy服务器指的是什么
    这篇文章主要介绍proxy服务器指的是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!代理服务器(Proxy Server)是指作为客户端和资源提供商或服务器之间中间件的物理机或者应用程序。代理服务器是网络信息的中...
    99+
    2023-06-14
  • ftp服务器指的是什么
    小编给大家分享一下ftp服务器指的是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!ftp服务器是指在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议...
    99+
    2023-06-14
  • 微服务是什么意思
    本篇文章给大家分享的是有关微服务是什么意思,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 微服务microservice微服务是指提供单个业务功能的服务,从技术角度看...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作