点击上方蓝字,关注我们
在传统或老式的应用程序架构中,IP 地址和端口主要是静态和固定的,因此可以轻松管理客户端应用程序。在静态的基于配置的应用程序中,每个服务都部署在同一位置,我们很少需要更改服务的位置。但是,在基于云的微服务应用中,IP 地址和端口很难管理,有时甚至是不可能的。在微服务架构中,我们不能保证会有静态配置,因为微服务是可独立部署的,各个团队在单个微服务上工作:每个团队都可以独立部署和扩展其微服务。系统中还可以添加更多服务和实例,以提供分布式应用程序的可扩展性。由于此缩放,服务位置可能会频繁更改,因此位置不能被视为静态位置。这意味着微服务架构需要更动态的配置。基于现实的部署策略,它的现状可能是如下这样的:
在微服务架构中,实现服务发现非常重要。这使客户端应用程序能够在没有硬编码的网络位置的情况下搜索服务。我们可以通过两种方式实施服务发现模式:通过客户端发现和服务端发现,下面主要详解服务端发现的模式。在服务器端发现模式中,客户端不知道服务注册表。客户服务使用负载均衡请求服务,然后查询服务注册处,在服务器端服务发现模式中,客户端无需担心管理用于负载平衡和发现服务的代码或算法。相反,我们可以使用单独的负载均衡服务器。具体交互如下:
如上所示,客户服务直接向负载平衡器提出请求,该平衡器会查询服务注册处,然后找到服务。
在SpringBoot的组件中,我们可以使用Eureka来实现服务的注册与发现的机制,它的具体交互如下:
下面还是以具体的案例实战下,我们首先需要创建maven的项目,该项目名称是app。然后删除该该src下的所有的文件夹,然后点击File,在新建中点击Module,出现如下的截图信息:
然后选择Spring Initializr,点击next
然后创建 eureka-server的组件,具体如下所示:
最后点击next,然后在SpringCloud Discovery中勾选Eureka Server,如下所示:
下来在EurekaServerApplication的文件中新增@EnableEurekaClient,整体源代码如下:
package com.example.provider;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@EnableEurekaClient
public class ProviderApplication
{
public static void main(String[] args)
{
SpringApplication.run(ProviderApplication.class, args);
}
}
然后把Resource下的application.properties修改为application.yml,文件内容为:
下来再创建新的组件provider,它的源代码为:
package com.example.provider;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@EnableEurekaClient
public class ProviderApplication
{
public static void main(String[] args)
{
SpringApplication.run(ProviderApplication.class, args);
}
}
配置文件具体为:
下来启动eureka-server的服务,启动后,然后访问http://localhost:8888/,发现并没有注册的,具体如下:
下来启动组件provider,然后再次查看eureka,发现服务provider被注册上了,如下所示:
感谢您的关注,后续会持续更新,聚焦于质量管理与测试效率提升。第十期“Python测试开发训练营”已直播开始,欢迎咨询。