Микросервисная архитектура - практический MSA
В этой главе мы создадим одно микросервисное приложение, которое будет использовать разные доступные сервисы. Все мы знаем, что микросервис не является рентабельным способом создания приложения, поскольку каждый сервис, который мы создаем, будет по своей природе полным стеком. Для создания микросервиса в локальной среде потребуется высокопроизводительная конфигурация системы, так как вам необходимо иметь четыре экземпляра сервера для непрерывной работы, чтобы его можно было использовать в определенный момент времени. Чтобы создать наш первый микросервис, мы будем использовать некоторые из доступных конечных точек SOA, и мы будем использовать их в нашем приложении.
Конфигурация и настройка системы
Прежде чем переходить к этапу сборки, подготовьте свою систему соответствующим образом. Вам понадобятся некоторые общедоступные веб-службы. Вы можете легко погуглить для этого. Если вы хотите использовать веб-службу SOAP, вы получите один файл WSDL, и оттуда вам нужно будет использовать конкретную веб-службу. Для службы REST вам понадобится только одна ссылка, чтобы использовать ее. В этом примере вы поместите три разных веб-сервиса «SOAP», «REST» и «custom» в одно приложение.
Архитектура приложения
Вы создадите приложение Java, используя план внедрения микросервиса. Вы создадите настраиваемую службу, и выходные данные этой службы будут использоваться в качестве входных данных для других служб.
Ниже приведены шаги, которые необходимо выполнить для разработки приложения для микросервисов.
Step 1: Client creation for SOAP service- Для изучения веб-службы доступно множество бесплатных веб-API. Для целей этого руководства используйте службу GeoIP «http://www.webservicex.net/.”Файл WSDL доступен по следующей ссылке на их веб-сайте « webservicex.net. Чтобы сгенерировать клиента из этого файла WSDL, все, что вам нужно сделать, это выполнить следующую команду в своем терминале.
wsimport http://www.webservicex.net/geoipservice.asmx?WSDL
Эта команда сгенерирует все необходимые клиентские файлы в одной папке с именем «SEI», названной в честь интерфейса конечной точки службы.
Step 2: Create your custom web service- Выполните тот же процесс, который упоминался на более раннем этапе в этом руководстве, и создайте REST api на основе Maven с именем CustomRest. После завершения вы найдете класс с именем «MyResource.java». Продолжайте и обновите этот класс, используя следующий код.
package com.tutorialspoint.customrest;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("myresource")
public class MyResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getIt() {
return "IND|INDIA|27.7.65.215";
}
}
Как только все будет готово, запустите это приложение на сервере. Вы должны получить в браузере следующий результат.
Это веб-сервер, который после вызова возвращает один строковый объект. Это служба ввода, которая предоставляет входные данные, которые могут использоваться другим приложением для создания записей.
Step 3: Configure another Rest API- На этом этапе используйте другую веб-службу, доступную по адресу services.groupkt.com. При вызове он вернет объект JSON.
Step 4: Create JAVA application - Создайте одно обычное приложение Java, выбрав «Новый проект» -> «Проект JAVA» и нажав «Готово», как показано на следующем снимке экрана.
Step 5: Add the SOAP client- На шаге 1 вы создали файл клиента для веб-службы SOAP. Продолжайте и добавьте эти клиентские файлы в свой текущий проект. После успешного добавления клиентских файлов каталог вашего приложения будет выглядеть следующим образом.
Step 6: Create your main app- Создайте свой основной класс, в котором вы будете использовать все эти три веб-службы. Щелкните правой кнопкой мыши исходный проект и создайте новый класс с именем «MicroServiceInAction.java». Следующая задача - вызвать из этого разные веб-сервисы.
Step 7: Call your custom web service - Для этого добавьте следующий набор кодов для реализации вызова вашей собственной службы.
try {
url = new URL("http://localhost:8080/CustomRest/webapi/myresource");
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/json");
if (conn.getResponseCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode());
}
BufferedReader br = new BufferedReader(new InputStreamReader(
(conn.getInputStream())));
while ((output = br.readLine()) != null) {
inputToOtherService = output;
}
conn.disconnect();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Step 8: Consume SOAP Services- Вы создали файл клиента, но не знаете, какой метод следует вызывать во всем пакете? Для этого вам нужно снова обратиться к WSDL, который вы использовали для создания своих клиентских файлов. Каждый файл WSDL должен иметь один поисковый тег «wsdl: service» для этого тега. Это должна быть ваша точка входа в эту веб-службу. Ниже показана конечная точка службы этого приложения.
Теперь вам нужно реализовать эту услугу в своем приложении. Ниже приведен набор кода Java, необходимый для реализации веб-службы SOAP.
GeoIPService newGeoIPService = new GeoIPService();
GeoIPServiceSoap newGeoIPServiceSoap = newGeoIPService.getGeoIPServiceSoap();
GeoIP newGeoIP = newGeoIPServiceSoap.getGeoIP(Ipaddress);
// Ipaddress is output of our own web service.
System.out.println("Country Name from SOAP Webserivce ---"+newGeoIP.getCountryName());
Step 9: Consume REST web service- Две услуги уже использованы. На этом этапе другая веб-служба REST с настраиваемым URL-адресом будет использоваться с помощью вашей настраиваемой веб-службы. Для этого используйте следующий набор кода.
String url1="http://services.groupkt.com/country/get/iso3code/";//customizing the Url
url1 = url1.concat(countryCode);
try {
URL url = new URL(url1);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/json");
if (conn.getResponseCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode());
}
BufferedReader br = new BufferedReader(new InputStreamReader(
(conn.getInputStream())));
while ((output = br.readLine()) != null) {
System.out.println(output);
}
conn.disconnect();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Step 10: Consume all services - Учитывая, что ваша веб-служба «CustomRest» работает и вы подключены к Интернету, если все выполнено успешно, то следующим должен быть ваш консолидированный основной класс.
package microserviceinaction;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.StringTokenizer;
import net.webservicex.GeoIP;
import net.webservicex.GeoIPService;
import net.webservicex.GeoIPServiceSoap;
public class MicroServiceInAction {
static URL url;
static HttpURLConnection conn;
static String output;
static String inputToOtherService;
static String countryCode;
static String ipAddress;
static String CountryName;
public static void main(String[] args) {
//consuming of your own web service
try {
url = new URL("http://localhost:8080/CustomRest/webapi/myresource");
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/json");
if (conn.getResponseCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode());
}
BufferedReader br = new BufferedReader(new InputStreamReader(
(conn.getInputStream())));
while ((output = br.readLine()) != null) {
inputToOtherService = output;
}
conn.disconnect();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//Fetching IP address from the String and other information
StringTokenizer st = new StringTokenizer(inputToOtherService);
countryCode = st.nextToken("|");
CountryName = st.nextToken("|");
ipAddress = st.nextToken("|");
// Call to SOAP web service with output of your web service---
// getting the location of our given IP address
String Ipaddress = ipAddress;
GeoIPService newGeoIPService = new GeoIPService();
GeoIPServiceSoap newGeoIPServiceSoap = newGeoIPService.getGeoIPServiceSoap();
GeoIP newGeoIP = newGeoIPServiceSoap.getGeoIP(Ipaddress);
System.out.println("Country Name from SOAP Webservice ---"+newGeoIP.getCountryName());
// Call to REST API --to get all the details of our country
String url1 = "http://services.groupkt.com/country/get/iso3code/"; //customizing the Url
url1 = url1.concat(countryCode);
try {
URL url = new URL(url1);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/json");
if (conn.getResponseCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode());
}
BufferedReader br = new BufferedReader(new InputStreamReader(
(conn.getInputStream())));
while ((output = br.readLine()) != null) {
System.out.println(output);
}
conn.disconnect();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
После того, как вы запустите этот файл, вы увидите следующий вывод в консоли. Вы успешно разработали свое первое приложение для микросервисов.