1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/man0sions-IdCreator

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Общая архитектура

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 ГБ, стресс-тест

image

curl http://127.0.0.1:8778/v1/IdCreator // localhost

Возвращаемое значение:
{
"time": 1601191174,
"status": 10000,
"msg": "операция выполнена успешно",
"data": "334011185131241472"
}

Вызов motan-rpc

Также можно обратиться к примерам в tests/rpc_test.go.

  1. В go.mod добавьте:
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
)
  1. Откройте main.go с помощью vim:
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)
}

  1. Откройте my_app.yaml с помощью vim:
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
  1. Откройте build.sh с помощью vim и запустите:
#!/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
  1. Запустите ./build.sh для компиляции.
  2. Запустите ./my_app для выполнения.

Использование 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 )

Вы можете оставить комментарий после Вход в систему

Введение

Распределённый генератор идентификаторов на Go, серверная часть. В основе — SnowFlake, в качестве центра регистрации служб используется ZooKeeper. Клиентские службы обнаруживаются для выполнения вызовов RPC; также поддерживается короткая цепочка HTTP. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/man0sions-IdCreator.git
git@api.gitlife.ru:oschina-mirror/man0sions-IdCreator.git
oschina-mirror
man0sions-IdCreator
man0sions-IdCreator
master