开源框架-Kite 是一个用 Go 开发微服务的框架

开源框架——Kite 是一个用 Go 开发微服务的框架

Kite 既是框架的名称,也是使用该框架编写的微服务。基本上,Kite 是一个 RPC 服务器和一个客户端。它连接到其他风筝和对等方以相互通信。他们可以使用名为 Kontrol 的服务发现其他风筝,并与它们进行双向通信。通信协议使用 WebSocket(或 XHR)作为传输,以允许 Web 应用程序直接连接到风筝。

风筝可以通过套接字会话发送dnode消息来相互交谈 。如果客户端知道服务器 kite 的 URL,它可以直接连接到它。如果 URL 未知,客户端可以从 Kontrol(服务发现)请求它。

安装和使用

安装包:

go get github.com/koding/kite

导入它:

import "github.com/koding/kite"

并kite用作代码中的包名。

什么是控制?

Kontrol 是 Kites 使用的服务注册和认证服务。它本身也是一只风筝。

当风筝开始运行时,它可以根据需要使用该 Register()方法将自己注册到 Kontrol。这使得其他人可以通过查询 Kontrol 找到它。还有一个代理风筝,用于为注册的风筝提供公共 URL。

查询有 7 个字段:

///////
  • 您至少必须提供用户名。
  • 字段的顺序是从一般到特殊。
  • 查询不能包含字段之间的空白部分。

安装控件

安装控件:

go get github.com/koding/kite/kontrol/kontrol

为 Kite 密钥生成密钥:

openssl genrsa -out key.pem 2048
openssl rsa -in key.pem -pubout > key_pub.pem

设置环境变量:

KONTROL_PORT=6000
KONTROL_USERNAME="kontrol"
KONTROL_STORAGE="etcd"
KONTROL_KONTROLURL="http://127.0.0.1:6000/kite"
KONTROL_PUBLICKEYFILE="certs/key_pub.pem"
KONTROL_PRIVATEKEYFILE="certs/key.pem"

生成初始kite密钥:

./bin/kontrol -initial

如何在浏览器中使用kite?

浏览器也可以是 Kite。它有自己的方法(“log”用于将消息记录到控制台,“alert”用于向用户显示警报等)。连接的风筝可以调用网页上定义的方法。

有关更多信息,请参阅kite.js 库。

我怎样才能写一个新的kite?

  • 导入kite包。
  • 使用 . 创建一个新实例kite.New()。
  • k.HandleFunc()使用或添加您的方法处理程序k.Handle()。
  • 称呼k.Run()

下面你可以找到一个例子,一个计算收到数字平方的数学kite:

package main

import "github.com/koding/kite"

func main() {
	// Create a kite
	k := kite.New("math", "1.0.0")

	// Add our handler method with the name "square"
	k.HandleFunc("square", func(r *kite.Request) (interface{}, error) {
		a := r.Args.One().MustFloat64()
		result := a * a    // calculate the square
		return result, nil // send back the result
	}).DisableAuthentication()

	// Attach to a server with port 3636 and run it
	k.Config.Port = 3636
	k.Run()
}

现在让我们连接到它并发送 a4作为参数。

package main

import (
	"fmt"

	"github.com/koding/kite"
)

func main() {
	k := kite.New("exp2", "1.0.0")

	// Connect to our math kite
	mathWorker := k.NewClient("http://localhost:3636/kite")
	mathWorker.Dial()

	response, _ := mathWorker.Tell("square", 4) // call "square" method with argument 4
	fmt.Println("result:", response.MustFloat64())
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章