SpringCloud(二)SpringCloud项目结构

目录

一.SpringCloud项目结构

1.Eureka注册发现服务

2.Eureka提供者服务

3.Eureka消费者服务

4.Eureka的高可用性


一.SpringCloud项目结构

1.Eureka注册发现服务

springcloud使用服务发现框架来管理微服务。

使用IDEA创建项目,选择spring Initializr,然后点击next(如果不能正确显示,说明网络有问题),
再进行项目基本信息填写之后,选择cloud discovery中的eureka service。选择spring boot的版本2.1.4

创建成功之后查看pom.xml文件,可以查看到spring cloud已经导入

springboot是2.1.4的正式版
springcloud是Greenwich.SR1正式版之后的第一次修正版
根据官网的介绍,Greenwich版本对应的刚好是springboot2.1.x的版本,所以pom文件的版本配置是OK的。

项目创建成功来,现在就开始写代码吧。

首先,作为spring的一个发现服务(此处项目起名为yiyuancloud),本身是不需要逻辑代码的。
在application.properties(很多人都习惯使用application.yml,因为本人习惯了properties,这里就不作更改了)中配置

server.port=8761
eureka.instance.hostname=localhost
#是否需要向服务端进行注册,如果只获取不注册,设置为false
eureka.client.register-with-eureka=false
#是否需要从服务端获取注册信息,服务端如果是集群需要配置为true
eureka.client.fetch-registry=false
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

然后在启动类上加上注解
@EnableEurekaServer
启动项目,访问http://localhost:8761/即可看到Eureka的服务注册信息。

2.Eureka提供者服务

和第一步一样创建项目provider。修改application.properties

eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
server.port=8773
spring.application.name=service-provider

然后在启动类上加上注解
@EnableEurekaServer
启动项目,访问http://localhost:8761/即可看到Eureka上新注册的provider信息service-provider。

修改启动类,测试代码

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@EnableEurekaClient
@RestController
@EnableDiscoveryClient
public class ProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(ProviderApplication.class, args);
    }

    @Value("${server.port}")
    String port;

    @RequestMapping("/hi")

    public String home(@RequestParam String name)
    {
        return "hi " + name + ",i am from port:" + port;
    }

}

访问http://localhost:8773/hi?name=武松

3.Eureka消费者服务

和第一步一样创建项目customer。修改application.properties

eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
server.port=8764
spring.application.name=feign-consumer
#断路器
feign.hystrix.enabled=true

在启动类上加入注解
@EnableEurekaClient启动项目,访问http://localhost:8761/即可看到Eureka上新注册的customer信息feign-customer。

修改启动类,添加HelloController和HelloService

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@EnableEurekaClient
@EnableHystrix
public class CustomerApplication {

    public static void main(String[] args) {
        SpringApplication.run(CustomerApplication.class, args);
    }
    @Bean
    @LoadBalanced
    RestTemplate restTemplate()
    {
        return new RestTemplate();
    }

}

@RestController
public class HelloController
{
    @Autowired
    HelloService helloService;

    @RequestMapping(value = "/hi")
    public String hi(@RequestParam String name)
    {
        return helloService.hiService(name);
    }

}

@Service
public class HelloService
{
    @Autowired
    RestTemplate restTemplate;

    // 断路器配置,当无法调用如下方法时,就会调用自定的hiError方法。
    @HystrixCommand(fallbackMethod = "hiError")
    public String hiService(String name)
    {
        String str1 =  restTemplate.getForObject("http://service-provider/hi?name=" + name, String.class);
        return str1;
    }

    public String hiError(String name)
    {
        return "hey " +
                name + ", there is some problem with hi page";
    }
}

这时候访问http://localhost:8764/hi?name=fys。可知,该接口调用的是provider服务中的/hi接口

如果这时候关闭provider服务,customer将会进入断路器配置的hiError方法

4.Eureka的高可用性

Eureka的高可用性实现为多个Eureka的相互注册,这样哪怕只剩一个eureka服务,系统仍然能够完好运行。例如现在有三个erueka1:8761,erueka2:8762,erueka3:8763
重点:遇坑笔记,在正式版的springcloud中,同一域名只能配置一个erueka服务。
想要配置多服务,可以修改host文件进行转发
erueka1的配置为

eureka.client.service-url.default-zone=http://eureka2:8762/eureka/,http://eureka3:8763/eureka/

erueka2的配置为

eureka.client.service-url.default-zone=http://eureka1:8761/eureka/,http://eureka3:8763/eureka/

erueka3的配置为

eureka.client.service-url.default-zone=http://eureka1:8761/eureka/,http://eureka2:8762/eureka/

同时在注册服务,比如customer中的注册地址设置多个

eureka.client.service-url.defaultZone= http://eureka1:8761/eureka/,http://eureka2:8762/eureka/,http://eureka3:8763/eureka/

访问http://eureka1:8761/可以看到eureka1,eureka2,eureka3相互注册成功

至此。最基本的微服务框架就ok了。
yiyuancloud服务用来管理发现
provider和customer作为微服务之间通过restful进行通信。
补充:Eureka还拥有心跳检测,健康检查,负载均衡等功能。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值