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

OSCHINA-MIRROR/kevwan-go-zero

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
readme-cn.md 21 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 10.03.2025 01:46 fef842e

go-zero

Ускорьте время от требований до запуска

English | Русский

Go Go Report Card goproxy codecov Release Go Reference Awesome Go License: MIT

go%0045;zero - A%0032;web%0032;%0026;%0032;rpc%0032;framework%0032;written%0032;in%0032;Go%0046;%007C%0020;Product%0020;Hunt

0. Введение в go-zero

go-zero (включено в карту облачной архитектуры CNCF: https://landscape.cncf.io/?selected=go-zero) — это веб- и RPC-фреймворк, который объединяет различные инженерные практики. Эластичность его дизайна обеспечивает стабильность при работе с большим количеством одновременных соединений, что было проверено на практике.go-zero включает минималистичные средства определения API и генератор кода goctl, который может автоматически создавать код на Go, iOS, Android, Kotlin, Dart, TypeScript, JavaScript на основе определённых файлов API и сразу запустить его. Преимущества использования go-zero:

  • Лёгкое получение стабильности сервисов с миллионами ежедневных активностей
  • Встроенное управление микросервисами, включающее цепочечное управление таймаутами, ограничение скорости, адаптивное отключение и адаптивное снижение нагрузки, без необходимости конфигураций и дополнительного кода
  • Интеграцию микросервисного управления middleware в существующие фреймворки без проблем
  • Минимальное описание API, позволяющее автоматически генерировать код для всех сторон
  • Автоматическую проверку легальности входящих данных от клиентов
  • Широкий набор инструментов для управления микросервисами и работы с параллелизмом

Архитектурная диаграмма

1. Описание фреймворка go-zero

В начале 2018 года мы решили перейти от монолитной архитектуры на Java + MongoDB к микросервисной архитектуре. После тщательного анализа и сравнения, мы приняли решение:* Использование языка программирования Go

  • Высокая производительность
  • Простой синтаксис
  • Подтверждённая эффективность разработки
  • Удобство развертывания
  • Низкие затраты на сервер
  • Разработка собственного микросервисного фреймворка
    • Большой опыт самостоятельной разработки микросервисных фреймворков
    • Возможность быстрого выявления проблем
    • Быстрое добавление новых возможностей## 2. Проектирование go-zero

При проектировании микросервисного фреймворка, мы стремились обеспечивать стабильность микросервисов, при этом особо акцентируя внимание на повышении эффективности разработки. Поэтому, ещё на этапе проектирования, мы установили следующие принципы:

  • Сохранять простоту — это основной принцип
  • Эластичное проектирование, ориентированное на отказоустойчивость
  • Предпочтение инструментам перед соглашениями и документацией
  • Высокая доступность, высокая пропускная способность, легкая масштабируемость
  • Дружественность к бизнес-разработчикам, скрытие сложностей
  • Однозначность выполнения задачи

Мы завершили переход от Java + MongoDB к Golang + MySQL за менее чем полгода, полностью запустив систему в конце августа 2018 года. Это обеспечило стабильное обеспечение быстрого роста бизнеса и гарантию высокой доступности всего сервиса.

3. Реализация проекта go-zero и его ключевые характеристики

Go-zero представляет собой интеграцию различных практик инженерии, включающую веб- и RPC-фреймворки. Ключевые характеристики:* Сильная поддержка инструментов, минимизация написания кода

  • Минимальное описание API
  • Полная совместимость с net/http
  • Поддержка middleware, что делает расширение удобным
  • Высокая производительность
  • Эластичное проектирование, ориентированное на отказоустойчивость
  • Встроенное управление службами, балансировка нагрузки
  • Встроенное управление скоростью, отключением и снижением нагрузки, которое автоматически активируется и восстанавливается
  • Автоматическая проверка параметров API
  • Цепочечное управление таймаутами
  • Автоматическое управление кэшированием
  • Отслеживание маршрутов, статистика и тревоги
  • Поддержка высокой пропускной способности, обеспечивающая стабильное обслуживание пиков трафика во время пандемииКак показано на следующей диаграмме, мы обеспечиваем высокую доступность всей системы на нескольких уровнях:Упругое проектирование

4. Основная архитектурная схема использования go-zero

image

Если вам понравилось, не забудьте звездить проект 👏

5. Установка

Используйте следующую команду для установки в корневой директории вашего проекта:

GO111MODULE=on GOPROXY=https://goproxy.cn/,direct go get -u github.com/zeromicro/go-zero

6. Быстрый старт

  1. Полный пример доступен здесь:

    Быстрая сборка высокопроизводительной микросервисной системы

    Быстрая сборка высокопроизводительной микросервисной системы — версия с несколькими RPC

  2. Установите goctl

    goctl произносится как go control, а не как go C-T-L. goctl означает контроль над кодом, а не его управление им. Вначале при создании goctl я хотел использовать этот инструмент для освобождения наших рук 👈 ```shell

    Для Go

    GOPROXY=https://goproxy.cn/,direct go install github.com/zeromicro/go-zero/tools/goctl@latest

    Для Mac

    brew install goctl

    Docker для архитектуры amd64

    docker pull kevinwan/goctl

    запустите goctl так

    docker run --rm -it -v $(pwd):/app kevinwan/goctl --help

    Docker для архитектуры arm64 (Mac)

    docker pull kevinwan/goctl:latest-arm64

    запустите goctl так

    docker run --rm -it -v $(pwd):/app kevinwan/goctl:latest-arm64 --help

    
    Убедитесь, что goctl можно выполнить.2. Быстро создайте API сервис
    
    ```shell
    goctl api new greet
    cd greet
    go mod init
    go mod tidy
    go run greet.go -f etc/greet-api.yaml

    По умолчанию прослушивает порт 8888 (можно изменить это в конфигурационном файле), запросы могут быть отправлены через curl:

    curl -i http://localhost:8888/from/you

    Ответ будет таким:

    HTTP/1.1 200 OK
    Content-Type: application/json
    Date: Thu, 22 Oct 2020 14:03:18 GMT
    Content-Length: 14
    
    {"message":"Hello"}

    Напишите бизнес-логику:

    • Файл API определяет внешние HTTP-интерфейсы службы, см. спецификацию API
    • Вы можете передать зависимости, такие как MySQL, Redis, в логику через servicecontext.go
    • Добавьте бизнес-логику в соответствующих методах get/post/put/delete в определении API. Можно сгенерировать необходимый Java, TypeScript, Dart, JavaScript код для фронтенда на основе api файла
    goctl api java -api greet.api -dir greet
    goctl api dart -api greet.api -dir greet
    ...

7. Бенчмарк

benchmark

Тестовый код находится здесь

8. Документация

9. Пользователи go-zeroGo-zero используется многими компаниями для производства, включая онлайн-обучение, электронную коммерцию, игры, блокчейн и т. д. В настоящее время среди пользователей Go-zero находятся, но не ограничиваются следующими компаниями:

1. Хорошее Будущее

2. Шанхайская компания Xiuxin Information Technology (Xiao Heiban)

3. Шанхайская компания Yushu Technology

4. Чжанцзянская компания Qianfan Network Technology

5. Клуб работников

6. Герои спорта (VSPN)

7. Githubmemory

8. Шэнько (Шанхай) компания по брендингу Senkoo

9. Аньшаньская компания Sanhe Zhongxin Technology

10. Гуанчжоуская компания Star Dream Workshop Network Technology

11. Ханьчжоуская компания Fuzama Technology

12. Компания Sai Ling Technology

13. Ловец лунной собаки

14. Цзэjiangская компания Sanhe Telecommunications Technology

15. Компания Aiksa

16. Чжэнчжоуская компания Zhonghe Internet Information Technology

17. Компания Sanqiyouxi Game

18. Чэндуанская компания Chengdao Fu Technology

19. Lenovo

20. Yunxi

21. Gao Ying International

22. Пекинская компания Beijing Zhongke Life Services

23. Индонезийская компания Indochat ASHIYING

24. Shuzan

25. Liangguan Technology

26. Hangzhou Youpa Cloud Technology

27. Shenzen Diangou E-commerce Holding Co., Ltd.

28. Shenzen Ningke Wode Technology Co., Ltd.

29. Guilin Urit Medical Electronics Co., Ltd.

30. Chengdu ZhiCheng Interactive Technology Co., Ltd.

31. Shenzen Banban Technology Co., Ltd.

32. Feishi (Suzhou) Digital Technology Co., Ltd.

33. Shanghai Jingsi Intelligent Technology Co., Ltd.

34. Nanning Chensheng Computer Technology Co., Ltd.

35. Qinhuangdao Team 2084

36. China Telecom Tianyi Cloud Co., Ltd.

37. Nanjing Suyouyun Information Technology Co., Ltd.

38. Beijing Xiaoya Technology Co., Ltd.

39. Shenzen Wu Boundary Technology Co., Ltd.

40. Maanshan Baozhu Network Technology Co., Ltd.

41. Shanghai Amour Tech Co., Ltd.

42.Invention Quantitative 43. Jinan Chaojie Network Technology Co., Ltd. 44. Suzhou Huanmeng Information Storage Technology Co., Ltd. 45. Chengdu Etu Education Technology Group Co., Ltd. 46. Shanghai Youzu Network Technology Co., Ltd. 47. Shenzhen Deep Security Co., Ltd. 48. China Duty Free Group Dayon Technology Interconnection Co., Ltd. 49. ECLOUDVALLEY TECHNOLOGY (HONG KONG) LIMITED 50. Xinkexi Technology (Shenzhen) Co., Ltd. 51. Chengdu Songbo Technology Co., Ltd. 52. Yi Jingzhilian 53. Shanghai Kobit Intelligent Technology Co., Ltd. 54. Yixi Technology Chengdu Co., Ltd. 55. Beijing Shujie Technology Co., Ltd. 56. Time Pulse Network Technology (Yunfu City) Co., Ltd. 57. Store Helper 58. Qiuniu Cloud 59. Feirui Network 60. 51CTO 61. Yuji Technology 62. Shandong Shengruan Science and Technology Co., Ltd. 63. Shanghai Xin'guo Technology Co., Ltd. (Hot Sale) 64. Chengdu Gaolu Technology Co., Ltd. 65. Feishi (Suzhou) Digital Technology Co., Ltd. 66. Shanghai Huaxi Information Technology Co., Ltd. 67. UnionTech Software Co., Ltd. 68. Detu 69. Dinghan Culture Co., Ltd. 70. Chaomao Wenhua (Yunnan) Development Finance Company 71. Hunan Dusi Information Technologies Company 72. Shenzhen Yuan Du 73. Wuhan Uotsi Technology Company (Jiaozhi) 74. Yushi Technologies 75. Dingdan Taodun 76. Keep 77. Simba Innovation 78. ZeroCMF 79. Anhuisyanmen Jiufu Jilinfa Group Companies 80. Guangzhou Tengsi Technology Company 81. Guangzhou Jiqizheng Wulian Technology Company 82. Xiamen Yilian Network Technology Co., Ltd. 83. Beijing Maiyatian Network Technology Company Limited 84. Foshan Shi Zhenlian Technology Company Limited 85. Suzhou Zhayan Information Technology Company Limited 86. Chinese Mobile Network Shanghai Industrial Research Institute 87. Tianshu Shuzhan (Zhejiang) Technology Company 88. Beijing Yurenxiang Intelligent Technology Company Limited 89.Beijing Shuzhi Fang Technology Company Limited 90. Председатель Технологий 91. Ningbo Yongfeng Information Technology Company Limited 92. Shenzen Wanjiawan Internet Science and Technology Co., Ltd. 93. Wu Hou District Bianchengmei Software Development Studio 94. Xi'an Jiaotong University Smart Energy and Carbon Neutrality Research Center 95. Chengdu Chuansuo Technology Co., Ltd. 96. Sonderbase Technologies 97. Shanghai Rongshi Information Technology Co., Ltd. 98. Shanghai Tongxi Intelligent Technology Co., Ltd. 99. Xin Hua San Technology Co., Ltd. Если ваша компания также использует go-zero, приветствуем регистрацию по адресу регистрационный адрес, это делается только для продвижения, никаких других целей.## 10. Обзор технологий CNCF

   

go-zero включена в обзор технологий CNCF Cloud Native.

11. Официальный WeChat

Статьи и видео, связанные с go-zero, будут собраны и представлены в официальном WeChat канале Микросервисы в действии. Приветствуем подписку 👏

wechat

12. Группа общения в WeChat

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

Вы можете предложить улучшения использования в группе, мы рассмотрим их рациональность и примем меры как можно быстрее.

Если вы заметили ошибку, пожалуйста, создайте issue немедленно, мы проверим и исправим её как можно скорее.

Перед тем как присоединиться к группе, пожалуйста, отметьте проект звездой ★, небольшая звезда ★ является источником энергии для авторов при ответе на множество вопросов! 🤝

wechat

13. Поддержите нас👍

Если вам понравился проект, вы можете поддержать авторов, заказав им кофе 🍹

wechat

Опубликовать ( 0 )

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

1
https://api.gitlife.ru/oschina-mirror/kevwan-go-zero.git
git@api.gitlife.ru:oschina-mirror/kevwan-go-zero.git
oschina-mirror
kevwan-go-zero
kevwan-go-zero
master