
搭建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
- URL:
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接口。
@RestControllerpublic 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注解:
@Configurationpublic class ConfigBean { @Bean @LoadBalanced public RestTemplate getRestTemplate() { return new RestTemplate(); }}
5. Hystrix断路器
5.1 服务熔断
在Provider端实现服务熔断:
@Overridepublic User getUser(int id) { User user = userDao.getUser(id); if (user == null) { throw new RuntimeException("不存在id=" + id + "对应的用户信息"); } return user;}
5.2 Hystrix FallonBack
在消费端实现降级:
@Componentpublic 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@EnableZuulProxypublic 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@EnableConfigServerpublic class ConfigServerApp { public static void main(String[] args) { SpringApplication.run(ConfigServerApp.class, args); }}
8. 总结
通过以上配置和实现,一个基于Spring Cloud的微服务架构已经初步建立。包括服务注册与发现、负载均衡、服务熔断、路由配置以及动态配置管理等功能。后续将持续优化各个模块的配置和服务实现,以提升系统的稳定性和可用性。
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年03月21日 08时26分44秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
如何查看jsplumb.js的API文档(YUIdoc的基本使用)
2019-03-06
大前端的自动化工厂(1)——Yeoman
2019-03-06
数据仓库建模方法论
2019-03-06
数据仓库之拉链表
2019-03-06
虚拟机搭建hadoop环境
2019-03-06
DataStax Bulk Loader教程(四)
2019-03-06
物联网、5G世界与大数据管理
2019-03-06
Cassandra与Kubernetes
2019-03-06
.NET应用框架架构设计实践 - 概述
2019-03-06
Rust 内置 trait :PartialEq 和 Eq
2019-03-06
Hibernate(十四)抓取策略
2019-03-06
Mybatis入门之增删改查
2019-03-06
[菜鸟的设计模式之旅]观察者模式
2019-03-06
Spring-继承JdbcDaoSupport类后简化配置文件内容
2019-03-06
Java基础IO流(一)
2019-03-06
Hibernate入门(四)---------一级缓存
2019-03-06
MySQL事务(学习笔记)
2019-03-06
一个web前端开发者的日常唠叨
2019-03-06
内存分配-slab分配器
2019-03-06
技术写作技巧分享:我是如何从写作小白成长为多平台优秀作者的?
2019-03-06