目录
1. 应用系统架构的演变
2. Spring Cloud Alibaba介绍
3. 开发示例
3.1 版本的选择
3.2 nacos安装和配置单机startup文件
3.2.1 配置单机startup文件
编辑
3.3 创建工程
3.3.1 创建父工程
3.3.2 创建服务提供者模块
3.3.2 服务消费者
3.4 测试
单应用架构 -> 应用服务器和数据库服务器分离 -> 应用服务器集群 -> 数据库压力变大,数据库读写分离 ->
引入缓存机制缓解数据库的压力 -> 数据库的水平/垂直拆分(数据库分库分表) -> 应用的拆分(微服务)
从系统架构上可以大体分为两种:单体应用, 分布式应用
1)单体应用
缺陷:
优点:
springcloud官网介绍
缺点:
优点:
常用的微服务分布式框架:
1)dubbo: 阿里开源的微服务框架,
2)springcloud: 基于spring,springboot的开源微服务框架
2018 年 10 月 31 日的凌晨,Spring Cloud Alibaba 正式入驻了 Spring Cloud 官方孵化器,并在 Maven 中央库发布了第一个版本。Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。
此项目包含开发分布式应用服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里分布式应用解决方案,通过阿里中间件来迅速搭建分布式应用系统
** 主要功能包括:**
注意组件
官方资料
springcloud基于springboot,两者之间的版本是有相关性的,不同的springcloud版本需要相对应的springboot版本支持。
官网说明
开发环境说明:
nacos官网
或分享连接已打包
nacos-server-1.4.0.zip - 蓝奏云
从官网上下载nacos,解压到一个目录即可,在运行前请确定正确安装了jdk1.8或以上版本,正确配置了JAVA_HOME。
来到安装目录运行startup.cmd即可启动.
注意:
nacos默认是在集群模式下运行的 所有我们需要修改 startup.cmd配置文件
注:修改蓝色区域的代码,前面加个rem
创建一个maven工程,该工程为父工程,不需要src目录,可以将其删除。编写pom.xml文件导入必要的依赖。
2.3.2.RELEASE
Hoxton.SR8
2.2.3.RELEASE
1.3.3
2.2.2.RELEASE
1.8
1.8
5.1.0.Final
org.springframework.boot
spring-boot-dependencies
${spring-boot.version}
pom
import
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
com.alibaba.cloud
spring-cloud-alibaba-dependencies
${spring-cloud-ali.version}
pom
import
org.hibernate
hibernate-validator
${hibernate.version}
org.springframework.cloud
spring-cloud-starter-openfeign
${spring-cloud-openfeign.version}
1)加入必要的依赖包:
org.springframework.boot
spring-boot-starter-web
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
com.alibaba.nacos
nacos-client
org.hibernate
hibernate-validator
2)创建完成模块后,创建模块的目录结构, 如下图:
# 服务端口号
server.port=8070
# 服务名称
spring.application.name=service-provider
# nacos中ip和端口号
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
4)启动服务,查看注册中心
nacos控制台 http://localhost:8848/nacos/
默认用户名:nacos,密码:nacos
5)创建一个服务
创建一个简单的服务提供者,向外提供restful服务,用于演示服务间的调用。
@RestController
class EchoController {
@RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
public String echo(@PathVariable String string) {
System.out.println("服务提供者.........");
return "Hello Nacos Discovery " + string;
}
}
创建服务消费者模块,具体操作和服务提供者相同。
1)导入依赖包:
org.springframework.boot
spring-boot-starter-web
org.springframework.cloud
spring-cloud-starter-openfeign
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
com.alibaba.nacos
nacos-client
2)创建模块结构及配置文件
在配置文件中配置了服务端口号,服务吗,及nacos服务IP及端口号。
3)创建启动类
@SpringBootApplication
@EnableDiscoveryClient
public class ConsumerApp {
public static void main(String[] args) {
SpringApplication.run(ConsumerApp.class, args);
}
}
@LoadBalanced
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
@RestController
public class TestController {
private final RestTemplate restTemplate;
@Autowired
public TestController(RestTemplate restTemplate) {this.restTemplate = restTemplate;}
@RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
public String echo(@PathVariable String str) {
System.out.println("服务消费者 .......... ");
return restTemplate.getForObject("http://service-provider/echo/" + str, String.class);
}
}
1)启动nacos,服务提供者,服务消费者
2)调用服务消费者他的echo服务,http://localhost:8080/echo/hello word,输出如下信息说明服务正常。