Микросервисы и облачная конфигурация с использованием Spring Boot
Теперь, когда у нас есть config-server, eureka-server-registry и репозиторий github конфигурация.репозиторий для конфигураций мы можем приступить к созданию первого микросервиса, этот микросервис будет обрабатывать данные клиентов. Как и в предыдущем проекте, нам нужно создать новый проект из start.spring.io со следующими зависимостями:
- База данных H2
- Весенняя сеть
- Клиент конфигурации
- Спринг-данные JPA
- Эврика клиент
С предыдущими зависимостями мы можем создать необходимые конечные точки REST:
POST /customers
GET /customers
У этого микросервиса будет конечная точка для создания нового клиента и вторая конечная точка для получения всех созданных клиентов.
Git-репозиторий
если вы хотите проверить результаты, вот репозиторий
клиент-мс
Доступ к серверу конфигурации
Первое, что нам нужно сделать, это подключить микросервис к серверу конфигурации и получить конфигурации, когда микросервисы создают контекст приложения, для этого добавим следующие строки в bootstrap.yml
:
spring:
application:
name: customer
cloud:
config:
uri:
Необходимо установить следующие свойства: spring.application.name
а также spring.cloud.config.uri
первый в данном случае это имя файла из ветки master в репозитории git, а второй — расположение сервера конфигурации spring, помните, что мы используем 8081
порт.
Это все настройки, которые нам нужны на данный момент, вы можете, например, указать конкретную ветку в репозитории git, чтобы узнать больше о конфигурации, которую вы можете просмотреть в документации Spring.
Включить эврика-клиент
Добавим новые записи в файл customer.yml
находится в главной ветке репозитория git
eureka:
client:
eureka-server-u-r-l-context:
service-url:
defaultZone:
Теперь микросервис будет подключаться к реестру сервера eureka,
Я добавил следующую запись:
application:
welcome:
message: This is an example
мы собираемся показать это сообщение в журнале, когда мы создаем нового клиента.
Создание конечной точки клиентов
1.- Создайте объект Java для сохранения нового клиента со свойствами: id
, name
//Customer.java
@Entity
@Table(name="customer")
public class Customer {
@Id
private String uuid;
private String name;
// getter and setter methods
}
2.- Создайте новый репозиторий
public interface CustomerRepository extends
JpaRepository<Customer, String> {
}
3.- Создайте контроллер с @PostMapping
а также @GetMapping
В следующем фрагменте кода мы видим свойство helloMessage
который будет введен из репозитория git и показан в журнале приложения
@RestController
@RequestMapping("/customers")
public class CustomerController {
private CustomerRepository customerRepository;
@Value("${application.welcome.message}")
private String helloMessage;
private final Logger log = LoggerFactory.getLogger(CustomerController.class);
public CustomerController(CustomerRepository customerRepository) {
this.customerRepository = customerRepository;
}
@PostMapping
public HttpEntity<Customer> createCustomer(
@RequestBody Customer customer
){
log.info(helloMessage);
this.customerRepository.saveAndFlush(customer);
return new ResponseEntity<>(customer, HttpStatus.OK);
}
@GetMapping
public HttpEntity<List<Customer>> findAll() {
log.info(helloMessage);
return new ResponseEntity<>(this.customerRepository.findAll(),
HttpStatus.OK);
}
}
Тестовое приложение
Чтобы протестировать микросервис, вы должны запустить все весенние приложения: конфигурацию сервера, сервер eureka и клиентский микросервис.
Вот шаги для создания контекста приложения:
1.- Подключитесь к конфигурации сервера spring и извлеките конфигурации, используя: application name
а также spring cloud config uri
2.- На основе конфигураций сервер Spring вернет конфигурации из
2019-09-27 20:24:32 INFO o.s.c.c.c.ConfigServicePropertySourceLocator:151 - Located environment: name=customer, profiles=[default], label=null, version=d81dfaf847f8341cf09d45397f1998adede6eca5, state=null
2019-09-27 20:24:32 INFO o.s.c.b.c.PropertySourceBootstrapConfiguration:101 - Located property source: CompositePropertySource {name="configService", propertySources=[MapPropertySource {name="configClient"}, MapPropertySource {name=""}]}
3.- Конфигурации для port
, eureka
, application.welcome.message
а также database
будет использоваться IOC для создания и внедрения необходимых объектов.
4.- Приложение будет зарегистрировано на сервере eureka.
2019-09-27 20:24:41 INFO o.s.c.n.e.s.EurekaServiceRegistry:41 - Registering application CUSTOMER with eureka with status UP
2019-09-27 20:24:41 INFO c.n.d.DiscoveryClient:844 - DiscoveryClient_CUSTOMER/192.168.8.105:customer:8083: registering service...
2019-09-27 20:24:41 INFO c.n.d.DiscoveryClient:853 - DiscoveryClient_CUSTOMER/192.168.8.105:customer:8083 - registration status: 204
И если вы перейдете к экземпляру eureka:
Как видите, наше приложение указано в экземпляре, перерегистрированном с IP-адресом и локальным портом, это будет использоваться шлюзом для перенаправления трафика в микросервис.
Теперь я попаду в конечные точки
конечная точка POST
ПОЛУЧИТЬ конечную точку
и журнал каждый раз, когда конечные точки попадают
![log.png](
Наконец, мы используем микросервисную архитектуру: config server
, eureka server
, centralized configuration
и customer service
а gateway
будут созданы в будущем.
Спасибо за прочтение и, пожалуйста, напишите отзыв