微分布式开发------eureka学习(二)

上一节讲述了搭建使用netfilx包搭建eureka项目,这节是对于eureka使用的记录。

上节中,创建了一个server,两个client,虽然并没有完全展示,但是具体流程就是上述将的那样。

一、通过eureka来消费接口

创建controller实现mapping就不说了,只要了解过SpringMvc做过开发的都会去实现。这里主要讲通过RestTemplate实现接口的调用。RestTemplate是Spring访问Rest服务的客户端,可以直接使用他来直接调用接口,其内部实现了多种快捷的远程http访问服务。代码如下:

@Configuration
public class BeanConfigration {

    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return  new RestTemplate();
    }

}

当然这个RestTemplate 是客户端调用的时候使用的,所以是在client需要进行实例化和配置的。当配置好后,就可以在客户端中进行使用:


@RestController
@RequestMapping("/test")
public class TestController {
	@Autowired
	private RestTemplate restTemplate;

    @RequestMapping("/hcc")
    public String eurekaTest(){
        return  restTemplate.getForObject("http://client01/test/hcc", String.class);
    }

这里需要注明的是,restTemplate.getForObject()是一个多态的方法,有4个方法,其他的暂时还没研究,现在用的是(Url, 返回参数类型)的方法。 还有最重要的一点,这个方法controller是在client02中创建的,需要调用client01中的/test/hcc, 所以后边的url是client01的,不要误解,我只是懒得起名字和好记,所以访问路径订的一样了。

client01是这个项目的名称,有application.yml中进行配置

spring:
  application:
    name: client01


server:
  port: 8081

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

client01 controller

@RestController
@RequestMapping("/test")
public class TestController {

    @RequestMapping("/hcc")
    public String eurekaTest(){

        return  "HCC";
    }
}

二、开启Eureka 认证

现在有一个很重要的问题,eureka Server是我们观察eureka具体运行的关键,相当于是一个eureka的管理后台,之前的配置虽然成功了,但也存在一些安全隐患,我们进入eureka管理页面,我们会得到以下信息:

在最下面我们会看到我们本机的ip,倘若有人知道我们服务器的ip和端口号,就可以在远程随意调用,窃取信息。你可以试试,在另一台机器是否能访问到这个机器。。。。。

添加认证第一步,就是添加依赖,但是在此之前你要明确是在那个服务中添加,这是server安全,所以我们需要在server中添加依赖:

方式---> 到maven repository 中查找相应的依赖,有些东西需要知道信息的来源,不要只粘贴别人的额。。。。。

当然我们选择Springboot包下的security,具体版本可以自己选择,也可以将版本直接注释掉,使用parent引用的版本。

  <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-security -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
            <!--<version>2.0.4.RELEASE</version>-->
        </dependency>

然后去设置server的用户名和密码

spring:
  application:
    name: server
  security:
    user:
      name: user
      password: pwd

这里注意的是 security 是在Spring下, 不和旧版本一样,旧版本是所有security 信息在 根目录下,效果如图

然后去更改客户端配置:

eureka:
  client:
    service-url:
      defaultZone: http://user:pwd@localhost:8761/eureka/

只是这样的话,启动的时候client 端回报一个错误, 就是找不到要注册的server, unknown server,最主要的原因就是新版本的cloud 最使用security时默认使用了cfrs,我们将cfrs关闭就可以了, 最让人蛋疼的是,之前版本是可以在配置文件中配置的,在最新的版本中,没找到,强行配置了一个也不起作用, 所以接下来的想到的方法就是覆盖启用这个方法的类,经过查询,得知这个类就是WebSecurityConfigurerAdapter,所以个人实现一个子类,覆盖启用的方法,别的全是使用父类的方法。。。。、

@EnableWebSecurity
public class MyWebSecurityConfigurerAdapter extends             
WebSecurityConfigurerAdapter {

    public void configure(HttpSecurity httpSecurity) throws Exception {
        //httpSecurity.csrf().disable();
        httpSecurity.csrf().ignoringAntMatchers("/eureka/**");
        super.configure(httpSecurity);
    }
}

三 实现高可用

这个高可用个人感觉和一个分布式系统的管理差不多,个人曾经学习过hadoop及其集群的搭建,当时做的时候使用的是一主二从,一个master 2个slave。为保持起正常通信,当时首先使用ssh进行3台机器的无密码链接,然后再配置各个Hadoop的配置文件,大概有这个几个文件来着(core、yarn、hdfs),其中配置的一个主要目的就是告诉各个机器的状态和所在的位置(IP),eureka的高可用也是类似,就是启用多个server,然后将各个server进行串联,窗帘的途径就是在配置文件对各个节点进行配置,然后各自想哥哥server注册。。。。

#eureka 配置
eureka:
  client:
    #是否向注册中心注册,因为其本身就是注册中心所以设为false, 默认是注册的
    register-with-eureka: false
    #是否需要检测服务, 只有客户端需要检测,提供服务,server只是维护示例
    fetch-registry: false
    #实例主机设置
    service-url:
      defaultZone: http://user:pwd@slave1:8762/eureka/,http://user:pwd@slave2:8763/eureka/
  instance:
    hostname: marster
#eureka 配置
eureka:
  client:
    #是否向注册中心注册,因为其本身就是注册中心所以设为false, 默认是注册的
    register-with-eureka: true
    #是否需要检测服务, 只有客户端需要检测,提供服务,server只是维护示例
    fetch-registry: true
    service-url:
      defaultZone: http://user:pwd@slave2:8763/eureka/,http://user:pwd@marster:8761/eureka/
    #实例主机设置
  instance:
    hostname: slave1
eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://user:pwd@slave1:8763/eureka/,http://user:pwd@marster:8761/eureka/
  instance:
    hostname: slave2

参考书籍:Spring Cloud 微服务全栈技术与案例实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值