Это простой фреймворк RPC, основанный на Netty + Zookeeper + Protostuff. Создание этого проекта в основном для обучения, так как я считаю, что "умение использовать", "умение читать исходный код", "умение писать" - это совершенно разные уровни мастерства.
GitHub: https://github.com/chenchuxin/ccx-rpc
Gitee: https://gitee.com/imccx/ccx-rpc
Для получения более подробных руководств посетите: https://www.cnblogs.com/chenchuxin/category/2010813.html#### Содержание Вот краткое описание важных пакетов:
|- ccx-rpc-common: базовые коды
|- extension: расширение, реализует собственную SPI, вдохновленная Dubbo, но упрощенная
|- url: URL, вдохновленный Dubbo, обычно используется для построения параметров
|- ccx-rpc-core: ядро логики RPC
|- annotation: содержит некоторые пользовательские аннотации, такие как @RpcService(поставщик услуг), @RpcReference(потребитель услуг)
|- compress: сжатие, сжатие данных для сетевой передачи
|- config: определяет интерфейсы конфигурации, такие как порт привязки службы, адрес Zookeeper и т.д.
|- faulttolerant: отказоустойчивость кластера, такие как быстрое отключение, повторные попытки и т.д.
|- loadbalance: балансировка нагрузки, выбор между несколькими службами. Стратегии включают случайный выбор, циклический выбор и т.д.
|- proxy: прокси, используется для клиентского прокси, клиентский вызов интерфейса службы, на самом деле это процесс сетевого запроса
|- registry: регистратор, такой как Zookeeper регистратор
|- remoting: сетевые вещи, такие как пользовательский протокол, Netty отправка и получение запросов и т.д.
|- serialize: сериализация, сетевая передача, сериализация неотъемлема
|- spring: некоторые вещи, связанные с Spring, такие как сканнеры, обработка bean
|- ccx-rpc-demo: примеры использования фреймворка
|- ccx-rpc-demo-client: клиент, потребитель услуг
|- ccx-rpc-demo-service: поставщик услуг
```#### Список функций
- [x] Пользовательская расширяемость SPI
- [x] Динамическое проксирование
- [x] JDK Proxy
- [ ] Javassist генерация кода, прямой вызов
- [x] Регистратор
- [x] Zookeeper
- [ ] Eureka
- [ ] Nacos
- [ ] Consul
- [ ] . . .
- [x] Сериализация
- [x] Protostuff
- [ ] Kryo
- [ ] . . .
- [x] Сжатие
- [x] gzip
- [ ] . . .
- [x] Удаленное взаимодействие
- [x] Пользовательский протокол взаимодействия
- [x] Использование фреймворка Netty
- [x] Конфигурация
- [x] Конфигурация параметров JVM
- [x] Конфигурация файлов properties
- [ ] Конфигурация Apollo
- [x] Балансировка нагрузки
- [x] Стратегия случайного выбора
- [x] Стратегия циклического выбора
- [ ] Стратегия согласованного хэширования
- [x] Множественные версии
- [x] Отказоустойчивость кластера
- [x] Стратегия повторных попыток
- [x] Стратегия быстрого отключения
- [ ] Грациозное завершение работы
- [ ] Мониторинг
- [ ] Модель потока
- [ ] Группировка услуг
- [ ] Фильтры
#### Запуск
1. Требования к окружению: JDK 8 и выше, плагин Lombok
2. Установите и запустите `Zookeeper`
3. Измените конфигурационный файл `ccx-rpc.properties`, задайте адрес `Zookeeper` и порт прослушивания, запустите сервис `com.ccx.rpc.demo.service.ServiceBootstrap`
4. Измените конфигурационный файл `ccx-rpc.properties`, задайте адрес `Zookeeper`, запустите клиент `com.ccx.rpc.demo.client.ClientBootstrap`
5. Для доступа к клиенту используйте адрес `http://localhost:8864/user/1`Адрес `http://localhost:8864/user/v2/1` позволяет получить доступ к другому реализованному интерфейсу, что демонстрирует функцию множественных версий.#### Участие в разработке
1. Создайте форк этого репозитория
2. Создайте новую ветку
3. Подключите код
4. Создайте запрос на слияние (Pull Request)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )