golang go语言_20个用于掌握微服务的Go语言项目

golang go语言

当2007年由一组Google编码人员查看各种计算机语言时,他们看到了数百种非常好的工具来编写软件,但没有一个工具能够为Google提供正确的功能。 也就是说,这种语言支持Google建立在众多服务器中协同工作的软件包体系的Google愿景。

有些语言过于关注堆栈的最低位。 其他的则太复杂了,具有很多只会妨碍它们的功能。 Google开发人员希望使用一种既简单又能在几个小时之内学习但又足够复杂的语言来处理现代Internet上的信息流。

解决方案是Go,这种语言对于使用C,Java或JavaScript的程序员来说将是一种熟悉的语言,换句话说,几乎每个程序员都可以。 Go具有足够的功能来编写一些循环和编码块,但没有一个精巧的想法需要花费一些时间来掌握。 内置例程经过了优化,可以从Internet接收数据。 其他一切,无论多么聪明,都被排除在外。

对于基于微服务架构构建应用程序的团队来说,Go是一个不错的选择,因为这些服务群只是Google今天运行的银河系的较小版本。 您的项目可能不会向世界提供电子邮件,地图,搜索和无数其他云服务,但最终仍可能为用户提供数十种不同的小型信息服务。 每个微服务项目都只是Google的一个微观版本,也可能是一个纳米版本。

Google决定开源Go是一个明智的决定。 该语言已经培养了成千上万的项目,这些项目为您的Web项目提供了构建基块。 这种丰富的传统使在其他团队中并行工作以创建自己的星座更加容易。

以下是20个最有趣的开源项目,它们用于旋​​转Go微服务网络。 从专注于消息传递,路由,错误处理或API的小型工具包,到用于构建MVC Web应用程序的更完整的框架,您将发现大量使用Go进行微型化的选择。

比戈

Beego框架包括许多标准附加功能,例如功能齐全的路由器和带有CRUD操作的对象到数据库映射器,几乎可以随时使用。 Bee工具是许多Beego爱好者最喜欢的工具 ,它是一种快速而强大的命令行工具,用于构建,更新,打包和部署应用程序。 Bee工具将从模板生成源代码,并使数据库保持最新状态。

水牛

到目前为止,许多微服务框架仅带您进入。 Buffalo团队需要一些东西来组装Web应用程序的所有部分,包括应用程序本身的一些设计。 他们喜欢将它称为“生态系统”,它可以将许多零件安装在一起。 如果您要路由(很少有人希望),那么Buffalo将会在Gorilla / Mux项目中推出。 如果您需要模板,则Buffalo比内置的Go机制更喜欢Plush 。 称为Pop的大量数据库连接模块集合将帮助您将数据库信息转换为Go对象。 您还将找到用于连接数据库,处理cookie以及完成几乎所有其他您可以想象的标准方法。

眼镜蛇

有时,您只需要代码的命令行界面。 Cobra准备好处理CLI的所有标准功能,因此您无需浪费时间实现代码来查找-h-help标志。 如果您的微服务将使用许多标志和其他功能来响应命令行调用,那么您将需要集成Cobra。

码头工人

您可以在任何计算机上运行微服务代码,包括您办公室里那间长期被遗忘的服务器机房中的一些裸机,但是越来越多的人将他们的代码捆绑在Docker容器中并将这些容器发送到云中。 小型程序包使处理许多不同的代码块变得更加容易—当您对微服务体系结构的愿景命令您创建许多小的独立代码块时,这是一项有价值的服务。

值得一提的是,Docker是用Go编写的,尽管在部署Docker容器时您可能永远不会使用这个事实。 Docker社区版本是开源的,因此您可以根据需要使用它,但是很可能您仅将Docker用作部署自己的微服务天才的工具。 Go爱好者想记住Docker是用Go编写的真正原因是因为Docker的普遍存在是对该语言支持的有力证明。

回声

Echo是一个极简主义的框架,但是它具有许多最重要的用于传递位的组件。 路由器将解压缩URL并将其转换为参数,因此您无需解析它们。 然后,您可以混合使用身份验证,表单解析,压缩和合理的限制。 您可以集中精力从函数中返回正确的信息。

失误

有时,API的用户会传递需要标记的错误参数。 您可以自己处理,也可以将其传递给Errors ,该库将自动执行大部分跟踪以帮助调试。 发生错误时,“错误”会使用注释详细说明错误的原因和位置。

杜松子酒

万一该名称不明显, Gin项目是流行的Martini框架的下一代。 您可能会说,杜松子酒(Gin)会丢弃多余的东西,而专注于提供最大风味的成分。 花费大量时间为微服务构建Node.js应用程序的开发人员会感到宾至如归。 您通过实例化一个对象,然后附加函数来处理特定的调用,在Gin中创建一个微服务。 Gin处理路由,您的功能提供业务逻辑。 如果您忽略一些标点符号,它甚至看起来像Node.js代码。

银杏

测试可能是微服务开发中最具挑战性的领域。 银杏通过行为驱动的测试扩展了标准Go发行版的内置测试机制。 测试语言提供了一种高级机制,用于明确说明功能或服务应包含的内容。 尽管可以根据需要使用其他匹配器库,但是通常使用银杏自己的Gomega匹配器评估结果。

银杏是一个复杂的框架,具有多种选项,可用于设置测试数据,运行测试以及在事实结束后删除测试数据。 该结构鼓励您描述结果,然后让Ginkgo处理其他所有事情。

果阿

如果您是过去使用Ruby和Praxis框架的开发人员,或者只是喜欢设计语言的强大功能和纪律的人,那么Goa会给您带来很多乐趣 。 您本身并不编写Go代码。 您在Goa DSL中编写了API的设计规范,然后Goa将其转换为可以工作的Go代码。 DSL针对微服务API进行了优化,并迫使您的设计符合标准体系结构。

大猩猩

大猩猩项目提供了另一个大模块集合,旨在快速交付您所需的许多内容。 Gorilla的Mux路由器被许多其他框架所使用,因为它是如此的好。 许多用户立即指出websocket代码是他们采用Gorilla的主要原因。

Gotify

同步一组微服务的挑战之一是设置有效的消息传递节点。 Gotify是用于发送和接收消息的简单服务器,可将您的微服务集合与持久消息组合在一起。 最有用的部分可能是可帮助调试的Web界面,这项任务可能非常艰巨。

雨果

Hugo这样的静态站点生成器无法构建很多微服务,但是当重复查询的答案数量有限时,此选项值得考虑。 雨果将吐出答案一次,然后可以一次又一次地得到答案。 当您的答案已经以HTML格式提供时,此功能非常有用。

风筝

如果您希望通过更多的服务之间的交互来构建一个更严格控制的服务群,请看一下Kite 。 建立Kite的目的是使微服务通信的协调更加简单。 来自非风筝的API调用通过Websocket进入,然后使用更快的较低级别的套接字连接(基于dnode传递新消息 。 名为Kontrol的服务注册表和身份验证服务位于中间。 如果您要经常交换消息,协调许多操作,则在不同服务器之间添加此互连层可以使一切变得更快。

对数

跟踪流入和流出您的API的数据及其可能产生的错误通常意味着编写日志文件。 该过程可以很简单,就像将一行数据写入一个打开的文件一样,但是通常最好使用一个完整的框架来记录具有所有其他功能和结构的日志。 Logrus提供格式化程序以标准化您的输出,并在以后使自动化任何日志文件分析变得更加容易。 不要编写自己的快速记录日志代码。 使用Logrus之类的库。

奈米

设置微服务不需要很多。 Nano项目是简单性的一个很好的例子。 实际代码不超过200行,如果算上注释,则仅超过400行。 但是,您可以只用几行自己的代码来建立微服务-一种微服务,它将仅封装处理请求所需的业务逻辑。 该框架还有其他一些不错的方面,例如与语言无关的API结构,因此您的Go代码可以与用其他语言编写的任何其他服务很好地配合使用。 然后有一个很好的测试过程来嵌入您自己的本地测试例程。 没有太多了,但这就是重点。

内格罗尼

有些人看着马提尼酒,决定朝一个更简单的方向发展。 他们去除了路由器和其他一些东西,以创建Negroni ,这是一个非常小的工具,除了提供一些标准文件,处理您的自定义请求,从基本问题中恢复并保留日志外,不会做太多事情。 如果您需要其他功能,可以将它们自己混合。 Negroni团队提供了很多适合自己的小型项目。

渲染器

准备输出时,需要获取数据并将其插入模板中。 Renderer是一个提供多种输出格式(JSON,JSONP,XML,YAML,HTML,文件)以及漂亮,快速且标准的模板引擎的项目。

陶醉

Revel从Node.js的Webpack世界中借用了一项巧妙的功能,该功能使Revel可以像IDE一样工作,或者至少是IDE的一部分,当您对代码进行更改时,它可以不断地重建您的项目。 按下保存后,框架将感知更改,编译代码,如果没有编译错误,则启动应用程序。 因此,Revel服务器会自动将更改部署到其代码中,这非常适合在您的桌面上进行开发,对于生产中的代码来说可能太诱人了。

该框架本身功能齐全,具有功能最丰富的所有主要和次要机制。 这意味着在数据流过请求管道时对数据起作用的模板,缓存,验证和过滤器。 如果您要构建许多微服务,那么有一个模块系统可以让您在项目之间共享一些MVC组件。

作证

使用经典的断言测试的最简单方法之一是使用Testify ,这是一个Go项目,该项目还提供了用于快速测试宏服务宏集合的各个部分的模拟工具。 只需几行即可编写一些基本测试,然后自动检查代码是否返回正确的响应。

收费站

首次发布API时,您希望世界上的每个人都可以调用它。 当服务器崩溃时,或者您查看云托管费用以提供弹性服务时,您会改变主意。 Tollbooth是一个轻量级系统,用于将传入请求限制为每秒一定数量。 切断前门的需求可以减少对微服务或数据库的需求,从而使您保持一切平稳运行。

没有

“无”是指完全没有框架。 您只需开始从头开始编写Go代码,而无需导入任何内容或实例化某些控制对象。 在Go中创建微服务很容易,因为Go已经内置了很多基本代码。这就是为什么仅用几百行代码就可以构建Nano之类的框架的原因。

在标准分发版中的一个标准库中,用于侦听套接字,解压缩HTTP请求以及为您完成所有工作的所有工作。 当然,某些框架可以添加一些规则或某些功能,但是很多时候,如果您只是编写一个非常基本的微服务,则不需要它。 所有的“附加功能”都无法解决,这导致一些Go开发人员说代码最终变得更加复杂。 如果您只是想在网络上聆听并根据收到的信息做出一些基本决定,那么您可能一无所获。

翻译自: https://www.infoworld.com/article/3322752/20-go-projects-for-mastering-microservices.html

golang go语言

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页