当Google编码人员小组在2007年调查各种计算机语言时,他们看到了数百种编写软件的非常好的工具,但没有一个工具为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处理其他所有事情。
小发明
上的《纽约时 》看起来像是 纸的数字版本,但在其下方是微服务的集合 。 该 站背后的程序员开发了Gizmo,以标准化他们用来保持馆藏正常运转的许多客房整理程序。 有用于记录,配置,发布/订阅维护和检查以确保部件正常运行的例程。
果阿
如果您是过去使用过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开发人员说代码最终变得更加复杂。 如果您只是想在 络上聆听并根据收到的信息做出一些基本决定,那么您可能一无所获。
From: https://www.infoworld.com/article/3326530/21-go-language-projects-for-mastering-microservices.html
文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树服务 格(istio)ServiceMesh介绍8829 人正在系统学习中 相关资源:经典刻录软件尼禄Nero6.6.1.4中文安装版及序列 -其它工具类资源…
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!