Ставьте лайки и смотрите снова, сделайте это привычкой.
Эта статья была включена вgithub-java3c, который содержит мою серию статей, банк вопросов для интервью, материалы для самостоятельного изучения, видео об архитекторах, электронные книги и т. д.
1. Происхождение творения
Всем привет, яl拉不拉米
, Сегодня я поделюсь с вами 10 лучшими проектами Alibaba с открытым исходным кодом, каждый из которых является важным инструментом для разработки Java.
Все эти 10 проектов являются проектами с открытым исходным кодом, опубликованными Alibaba на Github.
Это все проекты, которые java3c использовал в работе или изучал раньше, а также написаны статьи по отдельным проектам, но они никогда не сортировались вместе. На то, чтобы разобрать их по одному, чтобы все прочитали и изучили, ушло примерно полдня по выходным.
2. Введение проекта
1. Артас
На данный момент на github, который является самым популярным проектом Alibaba с открытым исходным кодом, насчитывается 27,4 тысячи звезд и 6 тысяч форков.
Arthas
Это инструмент диагностики Java с открытым исходным кодом от Alibaba, который очень нравится разработчикам.
Когда вы сталкиваетесь с проблемами, подобными следующим, и вы беспомощны,Arthas
Может помочь вам решить:
- Из какого пакета jar загружается этот класс? Почему сообщается о различных исключениях, связанных с классом?
- Почему код, который я изменил, не выполняется? Это потому, что я не совершал? Ветвь неправильная?
- Если вы столкнулись с проблемой и не можете отладить ее онлайн, можете ли вы опубликовать ее повторно, только добавив журнал?
- Есть проблема с обработкой данных пользователя онлайн, но ее нельзя отладить онлайн или воспроизвести офлайн!
- Есть ли глобальный вид, чтобы увидеть работоспособность системы?
- Есть ли способ отслеживать рабочее состояние JVM в реальном времени?
- Как быстро найти горячие точки приложения и сгенерировать график пламени?
- Как найти экземпляр класса прямо из JVM?
Arthas
Предоставляет интерфейс управления для онлайн-устранения неполадок без перезапуска, динамически отслеживает код Java, отслеживает состояние JVM в режиме реального времени.
Arthas
Поддержка JDK 6+, поддержка Linux/Mac/Windows, использование интерактивного режима командной строки и предоставлениеTab
Функция автозаполнения еще больше облегчает обнаружение и диагностику проблемы.
- Github: GitHub.com/Alibaba/art…
- Документация:arthas.aliyun.com/doc/
Более 120 компаний зарегистрировались для использования:
2. р3с
p3c — это подключаемый модуль проверки спецификации Java, разработанный Alibaba, который может быть унаследован в idea и eclipse.
Я считаю, что многие студенты, занимающиеся Java-разработкой, узнали о продуктах Alibaba.《Java开发手册》
, который в основном организует спецификации разработки Java, используемые внутри Alibaba.
Плагин p3c реализует 53 правила в руководстве по разработке, большинство из которых основано на реализации PMD, 4 из которых основаны на реализации IDEA и на основе IDEA.InspectionРеализована функция обнаружения в реальном времени. Некоторые правила реализованыQuick Fix
функция (быстрое исправление).
В настоящее время существует два режима обнаружения плагинов: обнаружение в реальном времени и запуск вручную.
Список основных функций:
3. Друид
Druid — это библиотека компонентов JDBC с тем же именем, что и c3p0 и dbcp, включая пул соединений с базой данных, синтаксический анализатор SQL и другие компоненты.Он используется или интегрируется в большое количество бизнес- и технических продуктов и испытал самые серьезные онлайн-бизнес. сценарии.
Пул соединений друидов
Пул соединений Druid — это проект пула соединений с базой данных с открытым исходным кодом Alibaba. Пул соединений Druid создан для мониторинга, встроенная мощная функция мониторинга, функции мониторинга не влияют на производительность. Мощный, может предотвратить внедрение SQL, встроенное ведение журнала может диагностировать поведение приложения Hack.
- Адрес проекта на гитхабеGitHub.com/alibaba/import…
- ДокументацияGitHub.com/alibaba/import…
- скачатьrepo1.maven.org/maven2/com/…
- МОНИТОР ДЕМОhttp://120.26.192.168/druid/index.html
Сравнение продуктов конкурентов
4. фастджсон
fastjson — это открытый исходный код Alibaba.JSON
Библиотека синтаксического анализа, которая может анализировать строки в формате JSON, поддерживает сериализацию Java Beans в строки JSON и десериализацию из строк JSON в JavaBeans.
Преимущества фастджсона
1. Быстро
По сравнению с другими библиотеками JSON, fastjson быстрее.С тех пор, как fastjson выпустил версию 1.1.x в 2011 году, его производительность никогда не была выше других библиотек JSON, реализованных на Java.
2. Широко используется
Fastjson широко используется в Alibaba и развернут на десятках тысяч серверов. В 2012 году оно было выбрано Open Source China одним из самых популярных отечественных программ с открытым исходным кодом.
3. Тест завершен
В fastjson очень много тесткейсов, в версии 1.2.11 их больше 3321. Регрессионное тестирование выполняется для каждого выпуска, чтобы обеспечить постоянное качество.
4. Простота использования
API fastjson очень лаконичен.
String text = JSON.toJSONString(obj); //序列化
VO vo = JSON.parseObject("{...}", VO.class); //反序列化
5. EasyExcel
EasyExcel — это простой и экономичный проект с открытым исходным кодом для чтения и записи Excel на основе Java. В случае максимально возможной экономии памяти поддерживает чтение и запись миллионов строк Excel.
Наиболее известными фреймворками для парсинга Java и генерации Excel являются Apache poi и jxl. Но у всех у них есть серьезная проблема, то есть они потребляют много памяти.У Poi есть набор API режима SAX, которые могут в определенной степени решить некоторые проблемы с переполнением памяти.Однако у POI все же есть некоторые недочеты.Например, Версия Excel 07 распаковывается и сохраняется после распаковки.Это делается в памяти, и потребление памяти по-прежнему очень велико. easyexcel переписал анализ POI версии 07 Excel, 3M excel по-прежнему требуется около 100M памяти, чтобы использовать POI sax для синтаксического анализа, использование easyexcel может уменьшить его до нескольких мегабайт, и независимо от того, насколько велик Excel, не будет переполнение памяти; версия 03 зависит от POI. Режим саксофона инкапсулирует преобразование модели на верхнем уровне, что делает его проще и удобнее для пользователей.
Например:Память 64M читает 75M (46W строк и 25 столбцов) Excel в течение 1 минуты
Также есть режим скорости, который может быть быстрее, но использование памяти будет чуть больше 100M.
6. канал
Компонент добавочной подписки и потребления Alibaba MySQL binlog.
Введение
Основная цель — анализировать добавочные журналы на основе базы данных MySQL и обеспечивать подписку и потребление добавочных данных.
Услуги, основанные на добавочной подписке и потреблении журналов, включают
- Зеркальное отображение базы данных
- Резервное копирование базы данных в режиме реального времени
- Построение индексов и обслуживание в режиме реального времени (разделение разнородных индексов, инвертирование индексов и т. д.)
- Обновление бизнес-кэша
- Инкрементальная обработка данных с бизнес-логикой
Текущий канал поддерживает исходные версии MySQL, включая 5.1.x, 5.5.x, 5.6.x, 5.7.x, 8.0.x.
Принцип работы
Принцип репликации master-slave MySQL
- Мастер MySQL записывает изменения данных в двоичный журнал (двоичный журнал, где записи называются событиями двоичного журнала, которые можно просмотреть с помощью событий show binlog)
- Подчиненное устройство MySQL копирует события двоичного журнала мастера в свой журнал ретрансляции.
- Ведомое устройство MySQL воспроизводит события в журнале ретрансляции, отражая изменения данных в своих собственных данных.
Как работает канал
- канал имитирует протокол взаимодействия ведомого устройства MySQL, притворяется ведомым устройством MySQL и отправляет протокол дампа ведущему устройству MySQL.
- Мастер MySQL получает запрос на дамп и начинает передавать двоичный журнал подчиненному (т.е. каналу)
- объект двоичного журнала синтаксического анализа канала (оригинал в виде потока байтов)
7. Весеннее облако Алибаба
Spring Cloud Alibaba стремится предоставить универсальное решение для разработки микросервисов. Этот проект содержит необходимые компоненты для разработки микрослужб распределенных приложений, чтобы разработчики могли легко использовать эти компоненты для разработки служб распределенных приложений с помощью модели программирования Spring Cloud.
Используя Spring Cloud Alibaba, вам нужно всего лишь добавить некоторые аннотации и небольшую настройку для подключения приложений Spring Cloud к микросервисным решениям Alibaba и быстрого создания распределенных систем приложений с помощью промежуточного программного обеспечения Alibaba.
Основная функция
- Снижение уровня обслуживания: По умолчанию он поддерживает доступ к текущим функциям ограничения и понижения версии WebServlet, WebFlux, OpenFeign, RestTemplate, Spring Cloud Gateway, Zuul, Dubbo и RocketMQ. Вы можете изменить текущие правила ограничения и понижения версии в режиме реального времени через консоль во время выполнения. , а также поддержка просмотра текущего ограничения и понижения Мониторинга метрик.
- Регистрация и обнаружение службы: адаптируйтесь к стандартам регистрации и обнаружения сервисов Spring Cloud и интегрируйте поддержку ленты по умолчанию.
- Распределенное управление конфигурацией: поддерживает внешнюю конфигурацию в распределенных системах и автоматически обновляется при изменении конфигурации.
- управляемый сообщениями: Создавайте управляемые сообщениями возможности для микросервисных приложений на основе Spring Cloud Stream.
- Распределенная транзакция: используйте аннотацию @GlobalTransactional для эффективного решения проблем с распределенными транзакциями без вмешательства в бизнес.
- Облачное хранилище объектов Alibaba: массивные, безопасные, недорогие и высоконадежные услуги облачного хранения, предоставляемые Alibaba Cloud. Храните и получайте доступ к любым типам данных в любом приложении, в любое время и в любом месте.
- Распределенное планирование задач: Предоставляет услуги планирования задач второго уровня, точные, высоконадежные и высокодоступные (на основе выражений Cron). Он также предоставляет модели выполнения распределенных задач, такие как задачи сетки. Grid-задачи поддерживают равномерное распределение морских квантовых задач на все рабочие (schedulerx-client) для выполнения.
- Облачный SMS-сервис Alibaba: SMS-сервисы, охватывающие весь мир, дружественные, эффективные и интеллектуальные взаимосвязанные коммуникационные возможности помогают предприятиям быстро создавать каналы доступа к клиентам.
компоненты
- Sentinel: Используйте трафик в качестве точки входа для защиты стабильности служб от нескольких измерений, таких как управление трафиком, переход на более ранние автоматические выключатели и защита системной нагрузки.
- Nacos: платформа динамического обнаружения служб, управления конфигурацией и управления службами, упрощающая создание облачных приложений.
- RocketMQ: Распределенная система обмена сообщениями с открытым исходным кодом, основанная на технологии распределенных кластеров с высокой доступностью, предоставляет услуги публикации сообщений и подписки с низкой задержкой и высокой надежностью.
- Dubbo: Apache Dubbo™ — это высокопроизводительная платформа Java RPC.
- Seata: продукт Alibaba с открытым исходным кодом, простое в использовании высокопроизводительное решение для распределенных транзакций с микросервисами.
- Alibaba Cloud OSS: Alibaba Cloud Object Storage Service (OSS) — это массивная, безопасная, недорогая и высоконадежная облачная служба хранения, предоставляемая Alibaba Cloud. Вы можете хранить и получать доступ к любым типам данных в любом приложении, в любое время и в любом месте.
- Alibaba Cloud SchedulerX: Распределенный продукт планирования задач, разработанный командой промежуточного программного обеспечения Alibaba, который предоставляет услуги планирования задач второго уровня, точные, высоконадежные и высокодоступные (на основе выражений Cron).
- Alibaba Cloud SMS: SMS-сервисы, охватывающие весь мир, дружественные, эффективные и интеллектуальные взаимосвязанные коммуникационные возможности помогают предприятиям быстро создавать каналы связи с клиентами.
8. Накос
Введение в Нако
Nacos — это сервисная инфраструктура для создания современных архитектур приложений, основанных на «сервисах» (таких как парадигма микросервисов, облачная парадигма).
Nacos поддерживает обнаружение, настройку и управление почти всеми основными типами «сервисов»:Kubernetes Service,gRPC & Dubbo RPC Service,Spring Cloud RESTful Service
Накос Особенности
-
Обнаружение служб и мониторинг работоспособности служб
Nacos поддерживает обнаружение сервисов на основе DNS и RPC. использование поставщиком услугРодной SDK,OpenAPIилиНезависимый агент ТОДОПосле регистрации службы потребители службы могут использоватьDNS TODOилиHTTP&APIНайдите и откройте для себя услуги.
Nacos обеспечивает проверку работоспособности сервисов в режиме реального времени, предотвращая запросы к неработоспособным хостам или экземплярам сервисов. Nacos поддерживает транспортный уровень (PING или TCP) и прикладной уровень (например, HTTP, MySQL, определяемый пользователем) проверки работоспособности. Для проверки работоспособности сервисов в сложных облачных средах и средах с топологией сети (таких как VPC, пограничные сети и т. д.) Nacos предлагает два режима проверки работоспособности: режим отчетов агента и активное обнаружение сервера. Nacos также предоставляет единую панель проверки работоспособности, которая поможет вам управлять доступностью услуг и трафиком в зависимости от состояния работоспособности.
-
Служба динамической настройки
Служба динамической настройки позволяет управлять конфигурацией приложений и конфигурацией служб для всех сред централизованным, внешним и динамическим образом.
Динамическая конфигурация устраняет необходимость повторного развертывания приложений и служб при изменении конфигурации, что делает управление конфигурацией более эффективным и гибким.
Централизованное управление конфигурацией упрощает внедрение служб без сохранения состояния и упрощает гибкое масштабирование служб по требованию.
Nacos предоставляет простой и удобный пользовательский интерфейс (Пример демонстрации консоли), чтобы помочь вам управлять конфигурацией всех служб и приложений. Nacos также предоставляет ряд готовых функций управления конфигурацией, включая отслеживание версий конфигурации, канареечный выпуск, откат конфигурации одним щелчком мыши и отслеживание состояния обновления конфигурации клиента, чтобы помочь вам более безопасно управлять конфигурациями в производственных средах. риск изменения конфигурации.
-
Служба динамического DNS
Служба динамической DNS поддерживает взвешенную маршрутизацию, упрощая реализацию балансировки нагрузки среднего уровня, более гибких политик маршрутизации, управления трафиком и простых служб разрешения DNS для внутренней сети центра обработки данных. Динамические службы DNS также упрощают реализацию обнаружения служб на основе протокола DNS, чтобы исключить риск привязки к API-интерфейсам обнаружения служб поставщика.
Nacos предлагает несколько простыхDNS APIs TODOПомогает вам управлять доменами, связанными с вашей службой, и списком доступных IP-портов.
-
Службы и управление их метаданными
Nacos позволяет вам управлять всеми службами и метаданными в центре обработки данных с точки зрения создания микросервисной платформы, включая управление описанием службы, жизненным циклом службы, анализом статической зависимости службы, состоянием службы, управлением трафиком службы, политиками маршрутизации и безопасности, соглашениями об уровне обслуживания службы, и самое главное, показатели статистики.
Карта Накос
- Общая картина функций: от функциональных функций, нефункциональных функций до всестороннего представления требований к функциям предметной области, которую мы хотим решить.
- Общая картина архитектуры: благодаря четкой архитектуре вы быстро войдете в мир Nacos.
- Общая картина бизнеса: бизнес-сценарии, которые могут поддерживаться текущими функциями, и их лучшие практики.
- Экологическая общая картина: систематически выясняйте отношения между Nacos и основной технологией экологии.
- Общая картина преимуществ: покажите основную конкурентоспособность Nacos
- Общая стратегическая картина: макропреимущества Nacos от стратегического до тактического уровня
Экологическая карта Накоса
9, Страж
Представляем Стража
С ростом популярности микросервисов стабильность между сервисами и сервисами становится все более важной. Sentinel — это компонент управления потоком для архитектуры распределенных сервисов. Он в основном использует поток в качестве точки входа, чтобы помочь вам обеспечить стабильность микросервисов из нескольких аспектов, таких как управление потоком, понижение версии прерывателя цепи и адаптивная защита системы.
Основные понятия Sentinel
ресурс
Ресурсы — ключевое понятие в Sentinel. Это может быть что угодно в приложении Java, например служба, предоставляемая приложением, или службы, предоставляемые другими приложениями, вызываемыми приложением, или даже фрагмент кода. В остальной части документации мы будем использовать ресурсы для описания блоков кода.
Пока код, определенный через Sentinel API, является ресурсом, он может быть защищен Sentinel. В большинстве случаев ресурсы можно идентифицировать с помощью сигнатур методов, URL-адресов или даже имен служб в качестве имен ресурсов.
правило
Правила, установленные для состояния ресурсов в реальном времени, могут включать правила управления потоком, правила перехода на более раннюю версию автоматического выключателя и правила защиты системы. Все правила могут динамически корректироваться в режиме реального времени.
Возможности Sentinel и философия дизайна
управление потоком
Управление потоком — это широко используемая концепция сетевой передачи, которая используется для настройки отправки данных сетевых пакетов. Однако с точки зрения стабильности системы также большое внимание уделяется скорости обработки запросов. Запросы, поступающие в любое время, часто бывают случайными и неконтролируемыми, а вычислительная мощность системы ограничена. Нам нужно управлять потоком в соответствии с вычислительной мощностью системы. Sentinel, как диспетчер, может корректировать случайные запросы в соответствующие формы по мере необходимости, как показано на следующем рисунке:
Управление потоком имеет следующие углы:
- Вызывающая связь ресурсов, такая как вызывающая связь ресурсов, связь между ресурсами и ресурсами;
- Запуск показателей, таких как количество запросов в секунду, пул потоков, загрузка системы и т. д.;
- Эффект управления, такой как ограничение постоянного тока, холодный пуск, создание очереди и т. д.
Философия дизайна Sentinel заключается в том, чтобы дать вам свободу выбора угла управления и гибко комбинировать его для достижения желаемого эффекта.
Слияние понижения
Помимо управления потоком, сокращение нестабильных ресурсов в цепочке вызовов также является одной из задач Sentinel. Из-за сложности отношения вызовов, если ресурс в цепочке вызовов становится нестабильным, запросы в конечном итоге накапливаются. этот вопрос иHystrixПроблема описанная там та же.
Принципы Sentinel и Hystrix одинаковы: когда ресурс в ссылке вызова нестабилен, например, это проявляется как тайм-аут и аномальная пропорция увеличивается, вызов этого ресурса ограничивается, и запрос быстро не проходит, чтобы избежать Affects другие ресурсы, и в конечном итоге производит лавинный эффект.
Sentinel и Hystrix используют совершенно другой подход к средствам ограничения.
Хайстрикс отПул потоковспособ изолировать зависимости (ресурсы в нашей концепции). Преимуществом этого является наиболее тщательная изоляция между ресурсами и ресурсами. Недостатком является то, что помимо увеличения стоимости переключения потоков, также необходимо заранее выделять размер пула потоков на каждый ресурс.
Sentinel использует два подхода к этой проблеме:
- Ограничение по количеству одновременных потоков
В отличие от метода изоляции пула ресурсов, Sentinel уменьшает влияние нестабильных ресурсов на другие ресурсы, ограничивая количество одновременных потоков ресурсов. Таким образом, нет накладных расходов на переключение потоков, и вам не нужно предварительно выделять размер пула потоков. Когда ресурс нестабилен, например, при более длительном времени отклика, прямым воздействием на ресурс является постепенное накопление количества потоков. Когда количество потоков на конкретном ресурсе достигает определенного числа, новые запросы к этому ресурсу отклоняются. Нагроможденные потоки не продолжают получать запросы, пока не выполнят свои задачи.
- Понижение ресурсов по времени отклика
В дополнение к управлению количеством одновременных потоков Sentinel может быстро ухудшать нестабильные ресурсы за счет времени отклика. Когда время отклика зависимого ресурса слишком велико, любой доступ к ресурсу будет напрямую запрещен и не будет восстановлен до тех пор, пока не пройдет указанное временное окно.
Защита от нагрузки на систему
Сентинел также предлагаетВозможность адаптивной защиты на уровне системы. Предотвращение схода лавин является важной частью защиты системы. Если нагрузка системы высока, если запрос продолжает поступать, это может привести к сбою системы и невозможности ответа. В кластерной среде балансировка сетевой нагрузки будет перенаправлять трафик, который должен передаваться этой машиной, на другие машины. Если в это время другие машины также находятся в пограничном состоянии, увеличение трафика приведет к сбою этой машины и, наконец, к недоступности всего кластера.
В ответ на эту ситуацию Sentinel предоставляет соответствующий механизм защиты, чтобы сбалансировать входящий трафик системы и нагрузку на систему, чтобы гарантировать, что система может обрабатывать большинство запросов в пределах своих возможностей.
Часовой рабочий механизм
- Предоставьте API для адаптации или отображения в основных платформах для определения ресурсов, которые необходимо защитить, и предоставьте средства для статистики ресурсов в реальном времени и анализа ссылок вызовов.
- По заданным правилам в сочетании со статистической информацией о ресурсах в режиме реального времени осуществляется контроль трафика. В то же время Sentinel предоставляет открытый интерфейс для определения и изменения правил.
- Sentinel предоставляет систему мониторинга в реальном времени, чтобы вы могли быстро понять текущее состояние системы.
общая структура
10. КОЛА
COLA — это аббревиатура от Clean Object-Oriented and Layered Architecture, что означает «чистая объектно-ориентированная многоуровневая архитектура».
В настоящее время COLA разработана дляCOLA 4.0.
COLA разделен на две части: COLA Architecture и COLA Components.
Хорошая архитектура приложения следует некоторым общим шаблонам, будь то шестиугольная архитектура, архитектура луковичного кольца, чистая архитектура или архитектура COLA.Оба выступают за бизнес как за основу, отделяют внешние зависимости, разделяют сложность бизнеса и техническую сложность и т. д..
Для быстрого создания приложений, соответствующих архитектуре COLA, мы предоставляем дваarchetype
,родыcola-archetypes
содержаниеВниз:
-
cola-archetype-service
: используется для создания чистых серверных сервисов.archetype
. -
cola-archetype-web
: используется для созданияadapter
интегрирован с серверными службамиweb
применениеarchetype
.
Выполните следующую команду:
mvn archetype:generate \
-DgroupId=com.alibaba.cola.demo.web \
-DartifactId=demo-web \
-Dversion=1.0.0-SNAPSHOT \
-Dpackage=com.alibaba.demo \
-DarchetypeArtifactId=cola-framework-archetype-web \
-DarchetypeGroupId=com.alibaba.cola \
-DarchetypeVersion=4.0.1
Если команда выполнена успешно, вы увидите следующую структуру кода приложения:
Основной задачей архитектуры COLA является определение хорошей структуры приложения и предоставление лучших практик для лучшей архитектуры приложений. В результате непрерывных исследований мы обнаружили, что хорошая иерархическая структура и хорошее определение структуры пакета могут помочь нам управлять хаотичной системой бизнес-приложений.
напиши в конце
Хоть сбор информации по этим проектам и не является технической работой, но на ее сортировку ушло много времени.Надеюсь, у вас еще останется впечатление в будущем, когда вы будете придумывать технические решения/технические подборки, или во время интервью. , возможно, это поможет вам решить проблему.
Если вам понравилось, пожалуйста, прокомментируйте и поставьте лайк, и автор вам все покажет!