• 技术文章 >后端开发 >Golang

    golang中什么是微服务

    青灯夜游青灯夜游2023-01-04 09:11:36原创304

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

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

    什么是微服务

    微服务(Microservices Architecture)是一种软件架构风格,面向服务的体系结构(SOA)架构样式的一种变体,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful 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 为我们提供了以下功能:

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

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

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

    GO Kit

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

    Go Kit 提供以下代码包:

    Go Kit 服务架构如下

    Gizmo

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

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

    所以,在我看来,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中什么是微服务的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:微服务 go语言 Golang
    上一篇:golang流程控制语句有哪些 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • go微服务框架go-micro整体架构介绍• go-micro+php+consul实现简单的微服务• PHP之微服务协程框架Swoft• springboot的那些特性,为什么适应微服务技术生态?• 在微服务架构中异常如何正确使用• 如何使用 PHP 实现微服务?
    1/1

    PHP中文网