Рубрики
Без рубрики

Введение в геод данных Spring

Узнайте, как использовать Spring Data Geode для настройки и разработки Java-клиентского приложения Apache Geode

Автор оригинала: baeldung.

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 .