搭建SpringCloud 系列demo
发布日期:2021-05-08 14:06:08 浏览次数:22 分类:精选文章

本文共 3535 字,大约阅读时间需要 11 分钟。

微服务架构构建与优化

1. 总工程结构

本文介绍了一个基于Spring Cloud的微服务架构构建,涵盖了多个微服务的设计与实现。项目结构包括以下核心模块:

1.1 项目总体结构

  • microservice-parent:作为父项目,包含了所有微服务的公共配置和依赖管理。
  • microservice-com:提供了通用功能模块,包含了Lombok等常用工具的依赖。
  • microservice-provider:实现了核心业务逻辑,负责用户数据的增删查改。
  • microservice-consumer:作为消费端,负责调用provider的服务接口。
  • microservice-eurake1:Eureka服务注册中心,用于服务的自动发现与注册。

2. 数据库配置与连接

2.1 数据库设置

  • 数据库类型:使用MySQL进行数据存储。

  • 连接池配置:

    • 初始化连接数:5
    • 最大连接数:5
    • 等待连接超时:200毫秒
    • 最小维持连接数:5
  • 数据库链接信息:

    • URL:jdbc:mysql://localhost:3306/lzj
    • 用户名:root
    • 密码:lzjlzj

3. API接口与实现

3.1 用户模块接口

  • UserDao:提供了用户数据的增删查改接口。

    public interface UserDao {
    public boolean addUser(User user);
    public User getUser(int id);
    public List
    getUsers();
    }
  • UserService:对UserDao接口进行了降级封装。

    public interface UserService {
    public boolean addUser(User user);
    public User getUser(int id);
    public List
    getUsers();
    }
  • UserController:实现了RESTful API接口。

    @RestController
    public class UserController {
    @Autowired
    private UserService service;
    @RequestMapping(value="/add", method=RequestMethod.POST)
    public boolean addUser(@RequestBody User user){
    return service.addUser(user);
    }
    @RequestMapping(value="/get/{id}", method=RequestMethod.GET)
    public User getUser(@PathVariable("id") int id){
    return service.getUser(id);
    }
    @RequestMapping(value="/getUser/list", method=RequestMethod.GET)
    public List
    getUsers(){
    return service.getUsers();
    }
    }

4. 负载均衡与Ribbon

4.1 Ribbon配置

在消费端加入Ribbon进行负载均衡配置:

org.springframework.cloud
spring-cloud-starter-ribbon

4.2 Ribbon注解

在消费端的ConfigBean中添加Ribbon注解:

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

5. Hystrix断路器

5.1 服务熔断

在Provider端实现服务熔断:

@Override
public User getUser(int id) {
User user = userDao.getUser(id);
if (user == null) {
throw new RuntimeException("不存在id=" + id + "对应的用户信息");
}
return user;
}

5.2 Hystrix FallonBack

在消费端实现降级:

@Component
public class ConsumerServiceFallbackFactory implements FallbackFactory
{
@Override
public ConsumerService create(Throwable arg0) {
return new ConsumerService() {
@Override
public User get(int id) {
return new User(id, "该用户不存在", 0);
}
@Override
public boolean add(User user) {
return false;
}
@Override
public List
getUsers() {
return null;
}
};
}
}

6. Zuul路由

6.1 路由配置

在Zuul路由中设置服务别名:

zuul:
prefix: /MyDemo
ignored-services: microservicecloud-provider
routes:
mydept.serviceId: microservicecloud-provider
mydept.path: /provider/**

6.2 服务路由

通过Zuul实现服务路由:

@SpringBootApplication
@EnableZuulProxy
public class ZullApplication {
public static void main(String[] args) {
SpringApplication.run(ZullApplication.class, args);
}
}

7. 配置管理

7.1 Git仓库配置

在Config Server中配置Git仓库:

spring:
cloud:
config:
server:
git:
uri: https://github.com/shuniversity/microservice-config.git

7.2 动态配置管理

通过Config Server实现动态配置管理:

@SpringBootApplication
@EnableConfigServer
public class ConfigServerApp {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApp.class, args);
}
}

8. 总结

通过以上配置和实现,一个基于Spring Cloud的微服务架构已经初步建立。包括服务注册与发现、负载均衡、服务熔断、路由配置以及动态配置管理等功能。后续将持续优化各个模块的配置和服务实现,以提升系统的稳定性和可用性。

上一篇:spark sql去除某一行或某一属性值为空的行 最简单办法
下一篇:SpringCLoud+redis+es高并发项目《十一》

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2025年03月21日 08时26分44秒