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

OSCHINA-MIRROR/unionj-cloud-go-doudou

15.03.2025 14:54
GitLife Service Account

Выполнение команды: go-doudou svc grpc --http2grpc позволяет одновременно сгенерировать полный набор кода для .grpc интерфейсов и RESTful интерфейсов. Обработчики RESTful интерфейсов вызывают методы реализации, используя в качестве входных и выходных данных типы сообщений protobuf. Это значит, что RESTful интерфейсы и gRPC интерфейсы используют одну и ту же бизнес-логику.

Ограничения:

  1. Подпись метода может содержать максимум два входных параметра, один из которых обязательно типа context.Context. Второй параметр, если он есть, должен быть структурой из пакета dto. Порядок параметров произвольный, но обычно контекст передается первым;
  2. Подпись метода может содержать максимум два выходных параметра, один из которых обязательно типа error. Второй параметр, если он есть, должен быть структурой из пакета dto. Порядок параметров произвольный, но обычно ошибка передается последней;
  3. НЕ поддерживаются RESTful интерфейсы, связанные с загрузкой/скачиванием файлов;
  4. НЕ поддерживаются RESTful интерфейсы с параметрами пути;
  5. НЕ поддерживаются RESTful интерфейсы, генерируемые из stream-типовых gRPC интерфейсов; поддерживаются только unary-типовыми gRPC интерфейсами.
Последнее сообщение коммита: add http2grpc flag to support expose RESTful endpoints to grpc service
15.03.2025 14:54
GitLife Service Account

Добавлен механизм повторной отправки запросов с клиентской стороны. Если соединение с одним узлом не удалось, в соответствии с алгоритмом балансировки нагрузки, запрос будет повторно направлен на следующий узел.

Последнее сообщение коммита: ...
15.03.2025 14:54
GitLife Service Account

При отправке запроса к сервису отфильтровывать узлы с пометкой suspect.

Последнее сообщение коммита: v0.8.1
15.03.2025 14:54
GitLife Service Account

Добавлено гладкое взвешенное циклическое распределение нагрузки. Если переменная окружения GDD_MEM_WEIGHT не установлена, то каждые GDD_MEM_WEIGHT_INTERVAL вычисляется локальный вес узла на основе значений здоровья узла и доли свободного времени ЦП.

Последнее сообщение коммита: ...
15.03.2025 14:54
GitLife Service Account
  1. В новой версии инструмента DDL добавлена возможность обновления индексов.
  2. В новой версии инструмента DDL добавлена возможность создания и обновления внешних ключей.
  3. Удалены символы «« и »» из названий схем, содержащих generics, в документации OpenAPI 3.0, связанной с Java.
  4. Добавлен структурный тип данных v3.FileModel для передачи как входных параметров при проектировании интерфейсов для загрузки файлов.
  5. При клиентской балансировке нагрузки отфильтровываются узлы со статусом suspect.
  6. Отключено использование механизма indirect ping, так как он не требуется в микросервисах с RESTful API; если пинг не проходит, это указывает на проблемы с этим backend-сервисом.
Последнее сообщение коммита: ...
15.03.2025 14:53
GitLife Service Account
  1. Поддержка загрузки нескольких конфигурационных файлов .env, предназначенных для различных окружений, таких как .env.dev.local, .env.test, .env.prod и т.д. Для использования этой возможности необходимо установить переменную окружения GDD_ENV через командную строку, Dockerfile, файлы развертывания Kubernetes (k8s) или настройки запуска отладки в IDE. Эта возможность зависит от библиотеки godotenv; подробнее см. precedence-conventions.

  2. Устранена проблема с предупреждением WARN[0000] Error loading .env file: open xxx/xxx/.env: no such file or directory, возникающая при выполнении команды генерации кода go-doudou. Go-doudou состоит из двух частей: генератора кода и RESTful-фреймворка. Только RESTful-фреймворк требует чтения файла .env для загрузки переменных окружения, а генератор кода — нет. Проблема заключалась в том, что код загрузки файла .env был помещён в функцию init пакета config, которая использовалась также в генераторе кода. В результате при выполнении команды go-doudou через командную строку выводилось предупреждение о недоступности файла .env. В версии 0.7.9 эта проблема была решена путём перемещения кода загрузки файла .env в функцию InitEnv, которая больше не вызывается автоматически при старте программы, а должна явно вызываться в коде. Эта функция уже добавлена в сгенерированной функции main.3. К структуре Paging пакета esutils добавлены поля Includes и Excludes, чтобы возвращались только необходимые поля, тем самым уменьшая размер ответа. Дополнительные объяснения доступны в документации Elasticsearch search-request-source-filtering.

  3. К структуре Paging пакета esutils добавлен метод String(), который позволяет печатать удобочитаемый JSON-формат запроса Elasticsearch для удобства отладки.

func TestPaging_String(t *testing.T) {
	p := Paging{
		StartDate: "2021-01-01",
		EndDate:   "2021-10-31",
		DateField: "submitTime",
		QueryConds: []QueryCond{
			{
				Pair: map[string][]interface{}{
					"user.keyword":     {"wubin1989"},
					"phone.keyword":    {"123456"},
					"district.keyword": {"Beijing"},
				},
				QueryLogic: MUST,
				QueryType:  TERMS,
			},
			{
				Pair: map[string][]interface{}{
					"score": {-1},
				},
				QueryLogic: MUSTNOT,
				QueryType:  TERMS,
			},
		},
	}
	fmt.Println(p.String())
}

Выход:

{
  "bool": {
    "must": [
      {
        "range": {
          "submitTime": {
            "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis",
            "gte": "2021-01-01T00:00:00+08:00",
            "lte": "2021-10-31T23:59:59+08:00",
            "boost": 1.0
          }
        }
      },
      {
        "term": {
          "user.keyword": {
            "value": "wubin1989",
            "boost": 1.0
          }
        }
      },
      {
        "term": {
          "phone.keyword": {
            "value": "123456",
            "boost": 1.0
          }
        }
      },
      {
        "term": {
          "district.keyword": {
            "value": "Beijing",
            "boost": 1.0
          }
        }
      }
    ],
    "must_not": [
      {
        "term": {
          "score": {
            "value": -1,
            "boost": 1.0
          }
        }
      }
    ]
  }
}
  1. Подкоманда go-doudou svc init была расширена новым параметром -m, который позволяет указывать имя модуля, например:
go-doudou svc init github.com/unionj-cloud/rabida -m github.com/unionj-cloud/rabida
```6. В DSL-конструкторе SQL-запросов теперь поддерживаются псевдонимы таблиц, например:
```go
where := C().Col("cc.survey_id").Eq(Literal("abc")).And(
          C().Col("cc.year").Eq(Literal(2021))).And(
          C().Col("cc.month").Eq(Literal(10))).And(
          C().Col("cc.stat_type").Eq(Literal(2)))
fmt.Println(where.Sql())

Результат:

(((cc.`survey_id` = 'abc' AND cc.`year` = '2021') AND cc.`month` = '10') AND cc.`stat_type` = '2')
Последнее сообщение коммита: v0.7.9
15.03.2025 14:53
GitLife Service Account

Исправьте ошибку вывода неправильной версии при выполнении команды go-doudou -v.

Последнее сообщение коммита: upgrade version to v0.7.8
15.03.2025 14:52
GitLife Service Account
  1. Улучшение поддержки строки запроса для массивов, например ?name[]=jack&name[]=lucy.
  2. Восстановление отображения комментариев для параметров запроса в документации внутренних API.
Последнее сообщение коммита: upgrade version to v0.7.7
15.03.2025 14:52
GitLife Service Account
  1. Внутренние интерфейсы и страницы go-doudou, связанные с управлением разработкой, были разделены от пользовательских бизнес-интерфейсов на уровне маршрутов. Вызов методов AddMiddleware и AddRoute больше не влияет на маршруты /go-doudou/doc, /go-doudou/openapi.json, /go-doudou/prometheus и /go-doudou/registry, а действует только на бизнес-интерфейсы.
  2. NewDefaultHttpSrv() больше не возвращает тип интерфейса Srv, а вместо этого возвращает конкретный тип *DefaultHttpSrv. Пользователи могут добавлять подмаршруты или промежуточные компоненты к экспортированным полям Router объекта DefaultHttpSrv для реализации других бизнес-потребностей, которые go-doudou не может удовлетворить.
Последнее сообщение коммита: ...
15.03.2025 14:52
GitLife Service Account
  • Исправлены некоторые баги в инструментах DDL.
  • Оптимизированы ошибочные логи middleware восстановления.
Последнее сообщение коммита: ...
15.03.2025 14:52
GitLife Service Account

Исправлено несколько ошибок.

Последнее сообщение коммита: ...
1
https://api.gitlife.ru/oschina-mirror/unionj-cloud-go-doudou.git
git@api.gitlife.ru:oschina-mirror/unionj-cloud-go-doudou.git
oschina-mirror
unionj-cloud-go-doudou
unionj-cloud-go-doudou