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
    评论
Java Spring Cloud 项目结构是构建基于Spring Cloud框架的Java应用程序的一种规范方式。它通常由多个模块组成,并采用分层架构来实现微服务的开发和部署。下面是一个简单的Java Spring Cloud 项目结构的示例: 1. 服务模块:这是项目的核心模块,包含了所有的业务逻辑和服务实现。在这个模块中,通常会使用Spring Boot来构建微服务,并且会使用Spring Cloud中的组件来实现服务注册、服务发现、负载均衡等特性。 2. 数据访问模块:这是处理数据持久化的模块,通常会使用Spring Data JPA或者MyBatis等框架来实现对数据库的访问。这个模块可以包含实体类、仓库接口、数据库连接配置等。 3. 消息队列模块:这是处理异步消息的模块,通常会使用Spring Cloud Stream或者Kafka等消息中间件来实现异步消息的发送和接收。这个模块可以包含消息发送、消息接收和消息处理等组件。 4. 客户端模块:这是调用其他微服务的模块,通常会使用Feign或者RestTemplate等工具来实现对其他服务的调用。这个模块可以包含服务消费者、服务提供者的客户端接口定义和配置。 5. 配置管理模块:这是管理应用程序配置的模块,通常会使用Spring Cloud Config来实现配置的集中管理和动态刷新。这个模块可以包含配置文件、配置中心的客户端配置和配置刷新的相关代码。 6. 运维监控模块:这是监控微服务运行状态和性能指标的模块,通常会使用Spring Cloud Sleuth或者Zipkin等工具来实现服务调用链的监控和分析。这个模块可以包含监控指标的收集、上报和展示等组件。 以上是一个简单的Java Spring Cloud项目结构的示例,实际项目中可能还会包含其他的模块和层次,具体的结构会根据项目的需求和组织的规模而有所不同。这种结构的好处是可以将系统按照功能和责任进行分割,使得项目更易于维护和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值