Общая архитектура
PHP вызывает генератор идентификаторов ID, PHP нуждается в помощи motan-agent для реализации RPC-коммуникации.
Общая архитектура
Golang/Java вызывает генератор ID. Для Golang/Java есть возможность TPC-длинных ссылок.
Алгоритм
+--------------------------------------------------------------------------+ | 1 Bit Unused | 41 Bit Timestamp | 10 Bit NodeID | 12 Bit Sequence ID | +--------------------------------------------------------------------------+ Алгоритм «снежинка», каждый узел генерирует 4096 уникальных идентификаторов в секунду.
Запуск
// Сначала измените config/mesh-confs/basic.yaml на адрес zk: "xxx.xxx.xxx.xxx:2181"
go run main.go --conf=config/main.yaml --pool=idcreator --nodeId=20
// nodeId поддерживает 0–1023, не изменяйте после запуска, иначе будут повторяющиеся id
// pool предоставляет конфигурацию сервиса motan
HTTP-вызов
12 ядер, 12 ГБ, стресс-тест
curl http://127.0.0.1:8778/v1/IdCreator // localhost
Возвращаемое значение:
{
"time": 1601191174,
"status": 10000,
"msg": "операция выполнена успешно",
"data": "334011185131241472"
}
Вызов motan-rpc
Также можно обратиться к примерам в tests/rpc_test.go.
replace (
github.com/weibreeze/breeze-go => github.com/weibreeze/breeze-go v0.1.1
go.uber.org/zap => github.com/uber-go/zap v1.9.1
)
package main
import (
"gitee.com/man0sions/IdCreator/lib/tmotan"
"log"
)
func main() {
log.SetFlags(log.Lshortfile)
client := tmotan.NewClient("./my_app.yaml")
ret, err := client.CallIdCreator()
log.Println(ret,err)
}
motan-client:
log_dir: motanlogs
motan-registry:
zk-registry:
protocol: zookeeper
address: "127.0.0.1:2181"
registrySessionTimeout: 10000
motan-basicRefer:
basicRefer:
group: test1
protocol: motan2
registry: zk-registry
requestTimeout: 1000
haStrategy: failover
loadbalance: roundrobin
serialization: simple
filter: "accessLog"
retries: 0
motan-refer:
call_proxy:
group: test1
path: com.xxx.yyy.service.IdCreatorService
registry: zk-registry
basicRefer: basicRefer
# requestTimeout: 250
retries: 1
#!/bin/sh
unset GOPROXY
# go version
export "GOPROXY=https://goproxy.cn/,direct"
go get -insecure -v && CGO_ENABLED=0 go build -o my_app main.go
Использование PHP
PHP не может подключаться к узлам обнаружения ZK, только самостоятельно циклически перебирать или настраивать motan-агент.
// Сначала установите https://github.com/weibocom/motan-php
<?php
define('D_AGENT_ADDR', '10.x.x.2:' . env('WEIBO_MESH_UG_PORT', 8841));
$service = 'com.xxx.yyy.service.IdCreatorService';
$group = 'test1';
$remote_method = '/v1/IdCreator';
$str = "";
$params = [$str];
$cx = new \Motan\MClient();
$request = new \Motan\Request($service, $remote_method, $params);
$request->setRequestId(1111);
$request->setGroup($group);
try {
$res = $cx->doCall($request);
var_dump($res);
} catch (Exception $e) {
var_dump($e->getMessage());
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )