我的编程空间,编程开发者的网络收藏夹
学习永远不晚

golang中什么是微服务

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

golang中什么是微服务

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

golang中什么是微服务

本教程操作环境:windows7系统、GO 1.18版本、Dell G3电脑。

什么是微服务

微服务(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 并决定不介绍这个框架的重要原因之一

【相关推荐:Go视频教程、编程教学】

以上就是golang中什么是微服务的详细内容,更多请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

golang中什么是微服务

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

下载Word文档

猜你喜欢

golang中什么是微服务

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

golang微服务指的是什么

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

Golang技术在微服务架构中的局限性是什么?

go 语言在微服务架构中存在一些缺陷,包括:goroutine 泄漏可能导致内存消耗和性能问题。网络通信配置的复杂性限制了自定义和低级网络需求的灵活性。生态系统限制可能会限制对特定于域的工具和库的访问。某些场景中性能可能会受到影响,以换取语
Golang技术在微服务架构中的局限性是什么?
2024-05-10

深入解析:Golang 微服务的本质是什么?

Golang(即Go语言)作为一种快速、高效、易于学习的编程语言,越来越受到开发者的青睐,尤其在微服务领域中有着广泛的应用。本文将深入解析Golang 微服务的本质是什么,并提供具体的代码示例。微服务架构是一种通过将大型应用拆分成一系列小
深入解析:Golang 微服务的本质是什么?
2024-02-29

微服务的APM是什么

本篇内容介绍了“微服务的APM是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!### 1. APM?APM (Application P
2023-06-19

微服务是什么意思

本篇文章给大家分享的是有关微服务是什么意思,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 微服务microservice微服务是指提供单个业务功能的服务,从技术角度看就是一种小
2023-06-16

golang微服务怎么实现

Go语言的微服务可以通过以下步骤来实现:设计服务接口:确定微服务的功能和接口,定义服务的输入输出参数。创建服务模块:使用Go语言编写服务模块,将服务的功能封装在一个独立的模块中。这个模块可以是一个独立的包,也可以是一个独立的项目。定义服务路
2023-10-23

golang中map是什么

在golang中,map是一种特殊的数据结构,是一个key(索引)和value(值)形式的无序的集合,也可以称为关联数组或字典;map是一种能够快速寻找值的理想结构,是能够快速根据给定key,找到对应的value的数据结构。
2023-05-14

Golang技术在微服务架构中是否具有优势?

go 技术在微服务架构中凭借并发性、安全性、高效性优势而备受青睐。其轻量级 goroutine 和 channel 特性增强了并发处理,内置的安全特性保障了数据安全,而编译后的高效机器码和 csp 模型优化了性能和可扩展性。实战案例展示了使
Golang技术在微服务架构中是否具有优势?
2024-05-10

golang中什么是泛型

在golang中,泛型是程序设计语言的一种风格或范式,是指编写模板适应所有类型,只有在具体使用时才定义具体变量类型。泛型允许程序员在强类型程序设计语言中编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型。
2023-05-14

微软免费云服务器是什么

微软免费云服务器(WindowsAzureCloudStorage)是微软公司在2013年发布的云计算服务之一,它允许企业将数据存储在互联网的多个云平台上。该服务基于微软的Azure云服务平台,包括WindowsAzure和MicrosoftAzure,可以帮助企业实现快速、灵活的云计算基础设施部署和托管。微软免费云服务器是一种云计算服务,通过使用微软云服务平台,企业可以将他们的数据存储在多个
2023-10-26

免费微软云服务器是什么

微软云服务器是微软公司开发的服务器软件产品,可以为用户提供高性能、高可靠性、高安全性以及高可扩展性的虚拟化技术支持,让用户可以按需使用资源,并享受高可靠性和高性能带来的好处,同时也可以节省成本。使用微软云服务器,可以为用户提供稳定、快速、安全可靠的服务,并支持多种云服务类型,如云存储、备份和恢复、云安全等。此外,微软云服务器还支持多种操作系统和软件,可以帮助用户轻松地迁移到不同的操作系统和软件
2023-10-26

golang中的bee是什么

golang中的bee是指一个协助快速开发beego项目的工具,通过bee工具您可以很容易的进行beego项目的创建、热编译、开发、测试以及部署工作,安装完bee工具后,需要将“$GOPATH”添加到环境变量中。本教程操作环境:window
2023-07-10

Golang在微服务架构中的实践

Golang在微服务架构中的实践随着互联网技术的飞速发展,微服务架构已经成为许多企业选择的软件架构模式之一。在微服务架构中,各个功能模块被拆分为独立的服务,每个服务都可以独立部署、伸缩和维护,从而提高系统的弹性和灵活性。而在实际的应用开发
Golang在微服务架构中的实践
2024-03-05

go微服务PolarisMesh服务端启动流程是什么

这篇文章主要介绍“go微服务PolarisMesh服务端启动流程是什么”,在日常操作中,相信很多人在go微服务PolarisMesh服务端启动流程是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”go微服务
2023-07-05

什么是golang

golang是一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言;它可以在不损失应用程序性能的情况下极大的降低代码的复杂性,还可以发挥多核处理器同步多工的优点,并可解决面向对象程序设计的麻烦,并帮助程序设计师处理琐碎但重要的内存管理问题。
2022-11-22

微云服务器繁忙是什么意思

微云服务器繁忙可能指微云服务器运行缓慢,无法提供足够的资源来处理请求,导致访问速度慢或者连接中断。为了解决这个问题,您可以尝试减少云服务器的使用数量,并增加资源的使用率;或者可以调整云服务器的资源分配策略,例如按需分配资源或者在某些情况下关闭某些资源或者减少资源的使用量。微云服务器繁忙可能会影响您的应用程序的性能,因此建议您定期备份数据,以防数据丢失。另外,您还可以考虑使用云存储服务来加快传输速度
2023-10-26

docker部署微服务的步骤是什么

部署微服务到Docker的步骤可以包括以下几个步骤:创建Dockerfile:编写一个Dockerfile文件,定义了构建镜像的过程,包括基础镜像、依赖安装、代码拷贝等。构建镜像:使用Docker命令构建镜像,例如使用`docker bui
2023-10-27

Go 协程在微服务架构中的作用是什么?

Go 协程在微服务架构中的作用在微服务架构中,Go 协程是一种有价值的工具,它允许并发的执行多个任务,而不需要管理线程。这可以显著提高应用程序的吞吐量,同时降低复杂性和资源消耗。什么是协程?协程是一种用户态线程,它允许在单个进程中同时
Go 协程在微服务架构中的作用是什么?
2024-05-21

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录