微服务与SpringBoot
1.什么是微服务
微服务是现在非常主流的一种架构风格,一个大型的复杂项目,由一个或多个小型服务组成。系统中的各个小型服务可被独立部署,各个小型服务之间是松耦合的,并且这些小型服务之间以轻量级的通信协作(http)作为基础进行通信,这样的微服务器架构独立性更强、粒度更细、性能更高、安全性、可扩展性、可重用性都更高。
微服务的入门框架——SpringBoot
说白了,就是我们传统的项目它是比较大的,比方说我这个项目中有很多个功能,如支付功能、用户认证功能、订单管理功能、搜索功能。这种传统方式存在上面讲的诸多问题,那么推出微服务。
什么是微服务呢?微服务会将传统项目按功能搭建多模块项目,即有支付模块、用户认 证模块、订单管理模块等,这些个子模块就是小型服务,然后小型服务与小型服务之间通过 http协议进行互通。如下图:
微服务,就是一个项目可以由多个小型服务构成(这里的小型服务就称之为微服务)。
用微服务架构开发的系统,如果要对订单服务进行升级/维护,只需要修改订单服务,其他的服务不需要更改,甚至不需要重新启动;如果用户服务访问量太大,需要横向扩展,那么只需针对用户服务增加服务器数量,扩展集群,其它服务也不受影响。所以微服务架构独立性更强、可扩展性比较强。
注意:并不是用了SpringBoot就表示实现了微服务架构,SpringBoot只是让我们更加方便地构建项目,真正的微服务需要架构上的支持。
Spring Bott
是一个Pivotal(原Spring团队)公司开发的框架,采用“规约大于配置”的原则,整 合其他以Spring为核心的框架集,是框架的框架。使用SpringBoot有四大好处:
1.让编码更简单
2.让配置更简单
3.让部署更简单
4.让监控更简单
SpringBoot自动配置原理是什么?
使用@SpringBootApplication注解标注主配置类,最主要的功能就是SpringBoot开启了一个@EnableAutoConfiguration注解的自动配置功能。@EnableAutoConfiguration下两个重要注解:@AutoConfigurationPackage、@Import
配置文件格式及使用
SpringBoot提供了两种默认的全局配置文件分别是:application.properties和
application.yml,两种格式的配置效果相同,风格各异,按个人喜好二选一即可。下面主要 以properties格式的配置为例。
常用系统配置属性。
Server常用的配置(tomcat的相关信息)
==server.port---------服务器端口
server.servlet.context-path---------应用上下文路径
server.tomcat.uri-encoding=UTF-8----读取属性配置文件,项目文件编码成功设置,页面还乱码时候设置
DataSource 常用的配置
spring.datasource.username ----数据库的登录用户名。
spring.datasource.password —数据库的登录密码。
spring.datasource.url ----数据库的JDBCURL。
spring.datasource.driver-class-name----JDBC驱动的全限定类名。默认根据URL自动检测。
spring.datasource.name —数据源的名称。
spring.datasource.pool-name ----连接池名称。
spring.datasource.max-active ----连接池中的最大活跃连接数。 spring.datasource.connection-timeout ----连接超时(单位毫秒) spring.datasource.max-idle -----连接池中的最大空闲连接数。
Tomcat 常用的配置
server.tomcat.accesslog.directory ----创建日志文件的目录 server.tomcat.accesslog.enabled ---------是否开启访问日志(默认:false) server.tomcat.accesslog.pattern ---------访问日志的格式(默认 common) server.tomcat.accesslog.prefix ---------日志名前缀(默认:access_log) server.tomcat.accesslog.suffix ---------日志名后缀(默认:.log) server.tomcat.max-http-header-sizeHttp ---------消息头最大字节数(默认:0) server.tomcat.uri-encoding ---------用来解码 URI 的字符编码
Redis 常用的配置
spring.redis.database ----连接工厂使用的数据库索引。(默认值: 0 。) spring.redis.host ----Redis 服务器主机地址。(默认值: localhost 。) spring.redis.password ----Redis 服务器的登录密码。
spring.redis.port ----Redis 服务器端口。(默认值: 6379 。)
spring.redis.timeout ----连接超时时间,单位为秒。(默认值: 0 。) spring.redis.pool.max-active —连接池在指定时间里能分配的最大连接数。负数表示无限制。默认值: 8
spring.redis.pool.max-idle —连接池里的最大空闲连接数。负数表示空闲连接数可以是无限大。默认值:8