1. Обзор
Apache Geode предоставляет решения для управления данными с помощью распределенной облачной архитектуры. Было бы идеально использовать API Spring Data для доступа к данным через сервер Apache Geode.
В этом уроке мы рассмотрим Spring Data Geode для настройки и разработки Java-клиентского приложения Apache Geode.
2. Пружинный геод данных
Библиотека Spring Data Geode позволяет Java – приложению настраивать сервер Apache Geode с помощью XML и аннотаций. В то же время библиотека также удобна для создания клиент-серверного приложения Apache Geode cache.
Библиотека Spring Data Geode похожа на Spring Data Gemfire . Помимо тонких различий , последний обеспечивает интеграцию с Pivotal Gemfire , которая является коммерческой версией Apache Geode.
Попутно мы рассмотрим несколько аннотаций Spring Data Geode для настройки Java-приложения в клиент кэша Apache Geode.
3. Зависимость Maven
Давайте добавим последнюю spring-geode-starter зависимость к вашему pom.xml :
org.springframework.geode spring-geode-starter 1.1.1.RELEASE
4. Приложение @ClientCacheApplication Apache Geode с загрузкой Spring
Во-первых, давайте создадим приложение Spring Boot Client Cache с помощью @SpringBootApplication :
@SpringBootApplication public class ClientCacheApp { public static void main(String[] args) { SpringApplication.run(ClientCacheApp.class, args); } }
Затем, чтобы преобразовать класс Client Cache App в клиент кэша Geode Apache, мы добавим предоставленный Spring Data Geode @ClientCacheApplication :
@ClientCacheApplication // existing annotations public class ClientCacheApp { // ... }
Вот и все! Клиентское приложение кэша готово к запуску.
Однако перед запуском нашего приложения нам нужно будет запустить сервер Apache Geode.
5. Запустите сервер Apache Geode
Предполагая , что Apache Geode и gfsh интерфейс командной строки уже настроены , мы можем запустить локатор с именем basic Locator , а затем сервер с именем basicServer.
Для этого давайте выполним следующие команды в gfsh CLI:
gfsh>start locator --name="basicLocator"
gfsh>start server --name="basicServer"
Как только сервер начнет работать, мы сможем перечислить всех участников:
gfsh>list members
Вывод gfsh CLI должен содержать список локатора и сервера:
Name | Id ------------ | ------------------------------------------------------------------ basicLocator | 10.25.3.192(basicLocator:25461:locator):1024 [Coordinator] basicServer | 10.25.3.192(basicServer:25546) :1025
Вуаля! Мы все готовы запустить наше клиентское приложение кэша с помощью команды Maven:
mvn spring-boot:run
6. Конфигурация
Давайте настроим наше клиентское приложение кэша для доступа к данным через сервер Apache Geode.
6.1. Регион
Сначала мы создадим объект с именем Author , а затем определим его как Геод Apache Region. A Регион похож на таблицу в СУБД:
@Region("Authors") public class Author { @Id private Long id; private String firstName; private String lastName; private int age; }
Давайте рассмотрим аннотации к геодам данных Spring, объявленные в сущности Author .
Начнем с того, что @Region создаст Authors region на сервере Apache Geode для сохранения объекта Author .
Затем @Id пометит свойство как первичный ключ.
6.2. Юридическое лицо
Мы можем включить сущность Author , добавив @EnableEntityDefinedRegions .
Кроме того, мы добавим @EnableClusterConfiguration , чтобы приложение могло создавать регионы на сервере Apache Geode:
@EnableEntityDefinedRegions(basePackageClasses = Author.class) @EnableClusterConfiguration // existing annotations public class ClientCacheApp { // ... }
Таким образом, перезапуск приложения автоматически создаст регионы:
gfsh>list regions List of regions --------------- Authors
Таким образом, перезапуск приложения автоматически создаст регионы:
Затем мы добавим операции CRUD для объекта Author .
Для этого давайте создадим репозиторий с именем Author Repository, который расширяет возможности Spring Data CrudRepository :
public interface AuthorRepository extends CrudRepository{ }
Затем мы включим AuthorRepository , добавив @EnableGemfireRepositories :
@EnableGemfireRepositories(basePackageClasses = AuthorRepository.class) // existing annotations public class ClientCacheApp { // ... }
Теперь мы все готовы выполнять операции CRUD над сущностью Author , используя такие методы, как save и findById , предоставленные CrudRepository .
6.4. Индексы
Spring Data Geode предоставляет простой способ создания и включения индексов на сервере Apache Geode.
Во-первых, мы добавим @EnableIndexing в Клиентское приложение кэша класс:
@EnableIndexing // existing annotations public class ClientCacheApp { // ... }
Затем давайте добавим @Indexed к свойству в классе Author :
public class Author { @Id private Long id; @Indexed private int age; // existing data members }
Здесь Spring Data Geode автоматически реализует индексы на основе аннотаций, определенных в сущности Author .
Следовательно, @Id будет реализовывать индекс первичного ключа для id . Аналогично, @Indexed реализует хэш-индекс для возраста .
Теперь давайте перезапустим приложение и подтвердим индексы, созданные на сервере Apache Geode:
gfsh> list indexes Member Name | Region Path | Name | Type | Indexed Expression | From Clause | Valid Index ----------- | ----------- | ----------------- | ----- | ------------------ | ----------- | ----------- basicServer | /Authors | AuthorsAgeKeyIdx | RANGE | age | /Authors | true basicServer | /Authors | AuthorsIdHashIdx | RANGE | id | /Authors | true
Аналогично, мы можем использовать @Luceneindexer для создания индекса Apache Geode Lucene для типизированных свойств String .
6.5. Непрерывный запрос
Непрерывный запрос позволяет приложению получать автоматические уведомления при изменении данных на сервере. Он соответствует запросу и зависит от модели подписки.
Чтобы добавить эту возможность, мы создадим службу Author и добавим @ContinuousQuery с соответствующим запросом:
@Service public class AuthorService { @ContinuousQuery(query = "SELECT * FROM /Authors a WHERE a.id = 1") public void process(CqEvent event) { System.out.println("Author #" + event.getKey() + " updated to " + event.getNewValue()); } }
Чтобы использовать непрерывные запросы, мы включим подписки между сервером и клиентом:
@ClientCacheApplication(subscriptionEnabled = true) // existing annotations public class ClientCacheApp { // ... }
Следовательно, наше приложение будет получать автоматическое уведомление в методе process всякий раз, когда мы изменяем объект Author с идентификатором , равным 1.
7. Дополнительные примечания
Давайте рассмотрим несколько удобных аннотаций, дополнительно доступных в библиотеке Spring Data Geode.
7.1. @PeerCacheApplication
До сих пор мы рассматривали приложение Spring Boot в качестве клиента кэша Apache Geode. Иногда нам может потребоваться, чтобы наше приложение было приложением однорангового кэша Apache Geode.
Затем мы должны аннотировать основной класс с помощью @PeerCacheApplication вместо @CacheClientApplication .
Кроме того, @PeerCacheApplication автоматически создаст встроенный экземпляр однорангового кэша для подключения.
7.2. @CacheServerApplication
Аналогично, чтобы наше приложение Spring Boot было как одноранговым членом, так и сервером, мы можем аннотировать основной класс с помощью @CacheServerApplication .
7.3. @Enablentpservice
Мы можем включить встроенный HTTP-сервер Apache Geode как для @PeerCacheApplication , так и для |/@CacheServerApplication.
Для этого нам нужно аннотировать основной класс с помощью @Enablentpservice . По умолчанию служба HTTP запускается на порту 7070.
7.4. @EnableLogging
Мы можем включить ведение журнала, просто добавив @EnableLogging в основной класс. В то же время мы можем использовать атрибуты LogLevel и logFile для установки соответствующих свойств.
7.5. @EnablePdx
Кроме того, мы можем включить метод сериализации Apache Geode PDX для всех наших доменов, просто добавив @EnablePdx в основной класс.
7.6. @EnableSsl и @Tenablesecurity
Мы можем использовать @EnableSsl для включения SSL сокета TCP/IP Apache Geode. Аналогично, @EnableSecurity можно использовать для включения безопасности Apache Geode для аутентификации и авторизации.
8. Заключение
В этом уроке мы изучили данные Spring для Apache Geode.
Для начала мы создали приложение Spring Boot, которое будет служить клиентским приложением Apache Geode cache.
В то же время мы рассмотрели несколько удобных аннотаций, предоставленных Spring Data Geode для настройки и включения функций Apache Geode.
Наконец, мы рассмотрели несколько дополнительных аннотаций, таких как @ Peer Cache Application и @ Cache Server Application , чтобы изменить приложение на одноранговое или сервер в конфигурации кластера.
Как обычно, все реализации кода доступны на GitHub .