gcr.io 镜像因为网络原因拉取失败
尝试换源失败,总是提示验证失败,于是打算直接用代理从原网站下载
虚拟机使用宿主机的梯子环境
vitualbox上没有装梯子,尝试使用宿主机的梯子环境。vitualbox上的网络连接方式是 网络地址转换(NAT)
在终端用
1 | ip route show |
查看虚拟机所占用的ip地址,选择default的记录下来。
在虚拟机设置中找到Network-NeworkProxy 选择manual
所有proxy的ip都填写刚刚记录的ip,端口就查看电脑本机梯子上的端口填入(我的梯子软件界面自带了该信息,如果没有可以通过查看梯子软件进程占用的端口来确定)
在浏览器中访问google/youtube,成功即可
mvn中的jib dockerBuild使用代理
首先参照此篇文章给dockerd设置的全局的代理。
随后,参考github上的此issue和另一篇文章,执行mvn命令时需要添加参数,格式如下:
1 | mvn compile -Dhttps.proxyHost=10.0.2.2 -Dhttps.proxyPort=33210 compile jib:dockerBuild |
其中10.0.2.2
和33210
换成和虚拟机网络代理设置中的ip地址和端口,注意ip地址前不需要加协议名(在这里被坑了,因为不是很了解代理参数的含义)
就可以成功得到所需要的镜像了!
gatling使用
1 | bin/gatling.sh |
参考gatling官方文档编写更复杂的脚本,比如模仿添加购物车操作,简单来说是在get函数中的url带上参数
docker的使用
1 | docker ps //查看当前在运行的容器 |
vscode中的run方法不会补全pom文件中的组件,第一次运行用:
1 | mvn clean spring-boot:run |
Docker相关概念
image 映像文件: 包括光盘的所有信息的文件 可以被运行
root文件系统: 内核启动后加载的第一个文件系统,包括内核代码的影响文件和初始化脚本
docker image相当于一个root文件系统,配置了容器运行时需要的程序、库、资源、配置参数,但是都是静态的,image不包括任何动态数据。
image和container 就像class 和 instance的关系,可以认为是一种特定轻量级的环境。
Redis相关
Redis info:
键值对 非关系型数据库;
可以内存,可以分布式
Redis slot:可以认为是逻辑上构建范围区间,每个节点对应一定的范围,计算出的哈希值落到一个slot中,则值存到对应的节点中去。在节点添加和减少的时候,
cluster 配置不同的地方在于:
1 | spring.redis.cluster.nodes[0]=ip:port |
another redis manager:
可以用来查看redis中数据存储的情况
尝试连接数据库查看session遇到的问题,此时使用的是JDBC
1 | org.springframework.beans.factory.beancreationexception: error creating bean with name 'org.springframework.boot.autoconfigure.session.sessionautoconfiguration$servletsessionrepositoryvalidator' |
解决方案:在pom.xml中添加依赖:
1 | <dependency> |
基于redis的session配置
bean factory 初始化失败 :把starter-data-jpa 改成 starter-data-redis 前者是用于session-jdbc的依赖
1 | <dependency> |
连不上 给redis镜像添加配置文件 修改映射端口(见群聊讨论)??重启 先开redis镜像 再开webpos镜像 又好了
直接配置redis,不使用docker
redis容器问题太多了 改用直接配置
下载压缩包 make后make install 确认redis-server,redis-cli可用
分节点配置脚本可以参考官方网站
自动化读取各个文件夹中的脚本来构建
1 | for d in ./*/ ; do (cd "$d" && redis-server ./redis.conf &); done |
构建之后需要检查
1 | redis-cli --cluster check 127.0.0.1:7000 //example |
镜像中连不上集群?
参考 由于在镜像中运行程序,应使用ifconfig查看docker对应的ip,替换127.0.0.1 并且在每个节点的redis.conf中插入
1 | protected-mode no |
设置后可以在宿主机命令行用redis-cli检查各个节点状态或者查看内容
host 网络?
待补充
可序列化对象才能写入redis数据库
出现问题:
1 | Cannot serialize; nested exception is org.springframework.core.serializer.support.SerializationFailedException: Failed to serialize object using DefaultSerializer ; nested exception is java.io.NotSerializableException: com.example.webpos.model.Product] with root cause |
查询后发现是被写入的对象(包括cart,item,product)应该implements Serializable接口,成为可序列化对象才能写入redis数据库
cache和session
cache:product时使用——实际的业务层是在JD 不是原先的serviceImp——用的是另一个数据库
@CacheEvict 清除缓存
session: 传递cart信息 getAttribute-getCart/setAttribute-changeCart 在controller中添加 与网页运行有关
HAProxy
编写好haproxy.cfg
1 | defaults |
用以下命令运行对应目录下的该文件
1 | haproxy -f haproxy.cfg |
1 | netstat -nlp //是查看所有的端口占用情况 |