单应用架构 -> 应用服务器和数据库服务器分离 -> 应用服务器集群 -> 数据库压力变大,数据库读写分离 ->
引入缓存机制缓解数据库的压力 -> 数据库的水平/垂直拆分(数据库分库分表) -> 应用的拆分(微服务)
从系统架构上可以大体分为两种:单体应用, 分布式应用
1)单体应用
缺陷:

优点:
2)分布式应用

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配置文件

创建一个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}
3.3.2 创建服务提供者模块
模块直接创建默认的maven项目即可

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-provedcloud:nacos:server-addr: 127.0.0.1:8848
编写启动类
@SpringBootApplication
@EnableDiscoveryClient
public class ProviedApp {public static void main(String[] args) {SpringApplication.run(ProviedApp.class,args);}}
4)启动服务,查看注册中心
nacos控制台 http://localhost:8848/nacos/
默认用户名:nacos,密码:nacos

5)创建一个服务
创建一个简单的服务提供者,向外提供restful服务,用于演示服务间的调用。

@RestController
public class TestController {@RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)public String echo(@PathVariable String string) {System.out.println("服务提供者.........");return "Hello Nacos Discovery " + string;}
}
3.3.2 服务消费者
创建服务消费者模块,具体操作和服务提供者相同。
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)创建模块结构及配置文件

在配置文件中配置了服务端口号,服务吗,及nacos服务IP及端口号。
3)创建启动类

@SpringBootApplication
@EnableDiscoveryClient
public class ConsumerApp {public static void main(String[] args) {SpringApplication.run(ConsumerApp.class,args);}
}
启动服务,查询nacos控制台:

4)开发一个服务,调用服务提供者提供的服务

RestConfig 类
@Configuration
public class RestConfig {//负载均衡@LoadBalanced@Beanpublic RestTemplate restTemplate() {return new RestTemplate();}}
TestController 类
@RestController
public class TestController {@Autowiredprivate RestTemplate restTemplate;@RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)public String echo(@PathVariable String str) {System.out.println("服务消费者 .......... ");//调用provied模块中的请求return restTemplate.getForObject("http://service-proved/echo/" + str, String.class);}}
3.4 测试
1)启动nacos,服务提供者,服务消费者
2)调用服务消费者他的echo服务,http://localhost:8080/echo/hello word,输出如下信息说明服务正常。

上一篇:MySQL之MVCC