6、是微服务的入门级框架,SpringBoot是SpringCloud的基础
7、提供生产就绪功能:如指标、健康检查、外部配置等
三、环境创建
======
Maven 3.3.9 + JDK1.8 + IDEA (Ultimate)
四、创建首个SpringBoot项目
==================
新建Sring Initalizr项目
然后点击next,显示为下面这张图片
这里我就不建什么helloworld、hellospringboot之类的项目了,注意工程名字要全小写,package配置的是包名,可以根据自己的喜爱设置,然后点击next
这里我们选择web工程,然后next
这里是让我们选择自己的工作路径,建议不要包含中文路径,点击finish
下面,我们可以删除一些暂时用不到的文件夹和文件(一共是3个)
注意我使用的springboot版本号为2.0.1.RELEASE,尽量和我一致,不能然后面我所使用的方法你可能用不了。
如果这里显示为红色的话,是因为maven还没有把所需要的依赖下载到本地仓库。
pom.xml文件基本上是这样的
<?xml version="1.0" encoding="UTF-8"?><project xmlns=“http://maven.apache.org/POM/4.0.0” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>
4.0.0
com.zmfx
dog
0.0.1-SNAPSHOT
jar
dog
Demo project for Spring Boot
org.springframework.boot
spring-boot-starter-parent
2.0.1.RELEASE
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
org.springframework.boot
spring-boot-starter-web
c
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
当所有的maven依赖下载完毕的时候,你项目的目录结构样子大体应该是这个样子的
依然是老套路,新建一个HelloController,来和SpringBoot打个招呼吧
package com.zmfx.hello;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
- 这里的@RestController 相当于@ResponseBody + @Controller
*/
@RestController
public class HelloController {
@RequestMapping(value = “/hello”,method = RequestMethod.GET)
public String helloSpringBoot(){
return “Hello SpringBoot!”;
}
}
我们点击IDEA的运行按钮,然后在控制台会看到SpringBoot内置的Tomcat访问的默认端口号8080
然后在网址中输入 http://127.0.0.1:8080/hello 页面会展示 Hello SpringBoot!
说明我们成功的使用SpringBoot项目和SpringBoot打过招呼了
这里需要说明一下,SpringBoot的启动类 DogApplication
package com.zmfx;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication //用来声明这是启动SpringBoot程序的启动类,必须有
public class DogApplication {
public static void main(String[] args) {
SpringApplication.run(DogApplication.class, args);
}
}
以上只是基础,接下来咱们再来看一下进阶一点的SpringBoot优化
在SpringBoot的Web项目中,默认采用的是内置Tomcat,当然也可以配置支持内置的jetty,内置有什么好处呢?
1. 方便微服务部署。
2. 方便项目启动,不需要下载Tomcat或者Jetty
针对目前的容器优化,目前来说没有太多地方,需要考虑如下几个点
-
线程数
-
超时时间
-
jvm优化
针对上述的优化点来说,首先线程数是一个重点,初始线程数和最大线程数,初始线程数保障启动的时候,如果有大量用户访问,能够很稳定的接受请求,
而最大线程数量用来保证系统的稳定性,而超时时间用来保障连接数不容易被压垮,如果大批量的请求过来,延迟比较高,不容易把线程打满。这种情况在生产中是比较常见的
一旦网络不稳定,宁愿丢包也不愿意把机器压垮。
jvm优化一般来说没有太多场景,无非就是加大初始的堆,和最大限制堆,当然也不是无限增大,根据的情况进快速开始
在spring boot配置文件中application.yml,添加以下配置
server:
tomcat:
min-spare-threads: 20
max-threads: 100
connection-timeout: 5000
这块对tomcat进行了一个优化配置,最大线程数是100,初始化线程是20,超时时间是5000ms
Jvm优化
这块主要不是谈如何优化,jvm优化是一个需要场景化的,没有什么太多特定参数,一般来说在server端运行都会指定如下参数
初始内存和最大内存基本会设置成一样的,具体大小根据场景设置,-server是一个必须要用的参数,
至于收集器这些使用默认的就可以了,除非有特定需求。
总目录展示
该笔记共八个节点(由浅入深),分为三大模块。
高性能。 秒杀涉及大量的并发读和并发写,因此支持高并发访问这点非常关键。该笔记将从设计数据的动静分离方案、热点的发现与隔离、请求的削峰与分层过滤、服务端的极致优化这4个方面重点介绍。
一致性。 秒杀中商品减库存的实现方式同样关键。可想而知,有限数量的商品在同一时刻被很多倍的请求同时来减库存,减库存又分为“拍下减库存”“付款减库存”以及预扣等几种,在大并发更新的过程中都要保证数据的准确性,其难度可想而知。因此,将用一个节点来专门讲解如何设计秒杀减库存方案。
高可用。 虽然介绍了很多极致的优化思路,但现实中总难免出现一些我们考虑不到的情况,所以要保证系统的高可用和正确性,还要设计一个PlanB来兜底,以便在最坏情况发生时仍然能够从容应对。笔记的最后,将带你思考可以从哪些环节来设计兜底方案。
篇幅有限,无法一个模块一个模块详细的展示(这些要点都收集在了这份《高并发秒杀顶级教程》里),麻烦各位转发一下(可以帮助更多的人看到哟!)
由于内容太多,这里只截取部分的内容。
及预扣等几种,在大并发更新的过程中都要保证数据的准确性,其难度可想而知。因此,将用一个节点来专门讲解如何设计秒杀减库存方案。
高可用。 虽然介绍了很多极致的优化思路,但现实中总难免出现一些我们考虑不到的情况,所以要保证系统的高可用和正确性,还要设计一个PlanB来兜底,以便在最坏情况发生时仍然能够从容应对。笔记的最后,将带你思考可以从哪些环节来设计兜底方案。
篇幅有限,无法一个模块一个模块详细的展示(这些要点都收集在了这份《高并发秒杀顶级教程》里),麻烦各位转发一下(可以帮助更多的人看到哟!)
[外链图片转存中…(img-YBCcfDYg-1714543552970)]
[外链图片转存中…(img-BN05ASsz-1714543552970)]
由于内容太多,这里只截取部分的内容。