架构师入门:搭建基本的Eureka架构(从项目里抽取)

  • 时间:
  • 浏览:119
  • 来源:张凯博客 - 专注共享言午博客分享

    至于这个 url和该服务物理位置的绑定关系,是在Eureka实物实现的,这也是Eureka可不后能 被称作“服务发现框架”的是因为。

    从第2行里,大伙儿儿能就看本服务将启用1111号端口,在第5行,大伙儿儿指定了本服务的名字,叫sayHello,在第9行,大伙儿儿把本服务注册到了Eureka服务端,也就说 注册中心里。

    这里大伙儿儿是通过http://sayHello/hello/Eureka这个 url去发现对应的服务,在这个 url里,只含高了服务名sayHello,并没人含高服务所在的主机名和端口号,换句话说,该url嘴笨 是通过注册中心定位到sayHello服务的物理位置的。

    第二步,在application.yml里,前要配置Eureka服务端的信息,代码如下。    

    第四步,在ServiceCallerApp.java办法 里,大伙儿儿编写启动本服务的代码,这大伙儿儿肯能不太熟悉了,什么都就不再讲述了。    

    

    

    请大伙儿儿注意,从第21到24行,大伙儿儿前要引入 ribbon的依赖包,通过它大伙儿儿可不后能 实现负载均衡。而其它的依赖包大伙儿儿就说 都肯能见过,什么都就不再解释了。

    当大伙儿儿依次启动Eureka服务器(也就说 注册中心)、服务提供者和服务调用者的Spring Boot启动线程池后,在浏览器里输入http://localhost:8888/后,能在信息面板里就看有一2个服务,分别是服务提供者SayHello和服务调用者CallHello,如下图所示。

        

    肯能这肯能是服务器端,什么都大伙儿儿通过第7行的代码,指定我不要 向Eureka注册中心注册此人 ,同理,服务器端的职责是维护服务列表而有的是调用服务,什么都通过第8行的代码指定本端我不要 检索服务。

    在第6行的main函数里,大伙儿儿还是通过run办法 启动Eureka服务。

    第一步,当大伙儿儿创建完Maven类型的项目后,前要在pom.xml里编写该项目所前要的依赖包,关键代码如下。 

    这里大伙儿儿将在EurekaBasicDemo-Server项目里编写Eureka服务器的代码。

    第四步,编写Spring Boot的启动类ServiceProviderApp.java,代码如下。    

    

    肯能服务调用者运行在500500端口上,什么都肯能大伙儿儿在浏览器里输入http://localhost:500500/hello,能就看在浏览器里输出“In Caller, hello Eureka”,这就说 明它嘴笨 肯能调用了服务提供者SayHello里的hello办法 。

    第三步,编写提供服务的控制器类,在其中调用服务提供者的提供的服务,代码如下。    

    在第7行的getRestTemplate办法 上,大伙儿儿启动了@LoadBalanced(负载均衡)的注解。关于负载均衡的细节将在里边章节里完整版描述,这里大伙儿儿引入@LoadBalanced注解的是因为是,RestTemplate类型的对象五种不具备调用远程服务的能力,也就说 说,肯能大伙儿儿上加这个 注解,线程池我不要 说能跑通。可不后能 当大伙儿儿引入该注解,该办法 所返回的对象可不后能 具备调用远程服务的能力。

    此外,大伙儿儿还能在服务提供者所在的控制台里就看host、port和ServiceID的输出,如下图所示,这能进一步验证了服务提供者里控制器类里的hello办法 被服务调用者调到。

在后继,还将给出搭建高可用Eureka架构的办法 。

    在第3行里,大伙儿儿指定了本服务的名字叫callHello,在第5行里大伙儿儿指定了本服务是运行在500500端口,在第9行里,大伙儿儿把本服务注册到Eureka服务器上。

    第二步,在application.yml里,大伙儿儿编写针对本项目的配置信息,代码如下。    

    在Eureka的服务器里,含高着记录当前所有服务列表的注册中心,而服务提供者和调用者所在的机器均被称为“Eureka客户端”。

这里是每段关键代码,肯能前要完整版可运行的代码,请给此人 留言。

    第三步,在Controller.java里,编写控制器每段的代码,在其中实现对外的服务。    

    肯能这时大伙儿儿在浏览器里输入http://localhost:1111/hello/Mike,能直接调用服务,一可不后能 看浏览器里就看“hello Mike”的输出。不过在大多数的场景里,大伙儿儿一般是在线程池里调用服务,而有的是简单地通过浏览器调用,在下面的EurekaBasicDemo-ServiceCaller项目里,大伙儿儿将演示在Eureka客户端调用服务的步骤。

    运行App.java启动Eureka服务器端后,在浏览器里输入localhost:8888后,可不后能 就看如下图所示的Eureka服务器端的信息面板,其中Instances currently registered with Eureka目前是空的,说明尚未有服务注册到本服务器的注册中心。

    第一步,创建完Maven类型的项目后,大伙儿儿前要在pom.xml里写入本项目的依赖包,关键代码如下。本项目所用到的依赖包就说 都用过,什么都这里就不展开讲了。 

    肯能这是趋于稳定Eureka的客户端,什么都加入第3行所示的注解,在main函数里,大伙儿儿依然是通过run办法 启动Spring Boot服务。    

    第一步。在这个 Maven项目里,大伙儿儿编写如下的pom.xml配置,关键代码如下。    

    这里大伙儿儿将在EurekaBasicDemo-ServerProvider项目里编写Eureka客户端的代码,在这个 项目里,大伙儿儿将提供一一2个SayHello的服务。

    第二步,在application.yml里编写针对服务提供者的配置信息,代码如下。    

    大伙儿儿通过第6和第7行的代码,指定了能触发hello办法 的url格式,在这个 办法 里,大伙儿儿首先通过第10到12行的代码,输出了主机名、端口号和ServiceID等信息,并在第14行里,返回了一一2个字符串。

    第三步,在RegisterCenterApp.java里编写Eureka启动代码。    

    从第1到第11行,大伙儿儿引入了版本号是Brixton.SR5的Spring Cloud包,这个 包里含高着Eureka的支持包,在第13到16行的代码里,引入了Eureka Server端的支持包,引入后,大伙儿儿可不后能 在项目的java文件里使用Eureka的形状。

没人废话,直接上干货,理论每段大伙儿儿可不后能 看其它资料。

    从第2和第5行里,大伙儿儿指定了Eureka服务端使用的主机地址和端口号,这里分别是localhost和8888,也就说 说让服务端运行在本地8888号端口,在第10行里,大伙儿儿指定了服务端所在的url地址。

    启动Eureka服务器端的RegisterApp.java和服务提供者端的ServiceProviderApp.java,在浏览器里输入http://localhost:8888/后,在Eureka的信息面板可不后能 就看SayHello服务,如下图所示。

    在提供服务的第11行的hello办法 里,大伙儿儿是通过第13行的代码,用RestTemplate类型对象的getForEntity办法 ,调用服务提供者sayHello提供的hello办法 。

    服务提供者会和服务器进行如下的交互:第一,注册五种能提供的服务,第二,定时发送心跳,以此证明本服务趋于稳定生效情况。而服务调用者一般会从服务器查找服务,并根据找到的结果从服务提供者这端调用服务。