video_surveillance2021是新版video_surveillance。新版基于SpringCloud Hoxton + Spring Cloud Alibaba构建微服务架构,基于TypeScript + Vue3.0构建前端
video_surveillance2021的前端项目: video_surveillance2021_vue3
-
高性能,容错,可扩展,数据一致性,负载均衡,心跳,通信,安全,网络I/O。
-
分布式(不管是微服务还是服务网格)内部链路通信多采用rpc而不起http。具体要考虑的有:序列化,网络io,连接管理,心跳健康检测,路由负载均衡,异常重试及快速失败,服务分组,熔断限流,服务发现,异步队列,事件解耦,责任链模式实现可插拔,代理模式实现隐藏复杂底层逻辑。
-
问题的考虑应该从两个层面入手,即机器层面和网络层面,而网络层面主要包括网络分区,网络故障,网络延迟。网络方面的问题解决可以参考两种手段,一是基于分布式锁避免死锁的超时手段,二是基于https证书颁发的方式引入第三方权威机构。
-
我认为的三高主要是包括:高性能,高可用和高可扩展。其中高性能应该包括高并发实现大吞吐量,基于复制手段的复制策略实现高可用并保证有效的数据一致性,如何基于架构规范和设计模式来保证高可扩展。高并发主要手段:静态资源CDN化、动静分离、客户端排队与答题、多级缓存、消息队列异步、分布式化即服务拆分实现并行计算、服务熔断、服务降级、限流、削峰、做好服务隔离、做好风险控制、做好兜底策略
- Spring Boot 2.3.6.RELEASE
- Spring Cloud Hoxton.SR9
- Spring Cloud Alibaba
- Spring Cloud Security
- Spring Cloud Oauth2
- MyBatis-Plus
- Spring Cloud OpenFeign
- Spring Cloud Alibaba Nacos
- Spring Cloud Alibaba Sentinel
- Spring Boot Admin
- Spring Cloud Bus
- 消息中间件: RocketMQ、Kafka
- 日志处理: ELK
- 链路追踪: Skywalking APM
- 监控告警: Prometheus + Grafana
- 定时任务: Xxl-Job
- 分布式事务: Seata
- 分库分表: ShardingSphere
- 分布式文件存储: FastDFS + OSS
- 服务器: Tomcat、Jetty、Nginx + OpenResty + Lua
- 数据库: MySQL、Redis、MongoDB、ElasticSearch
- 运维CI/CD: Jenkins + Docker + Kubernetes
- 分布式ID:
基于雪花算法实现分布式ID生成
- 分布式Session:
jwt token作分布式session的解决方案,oauth2作授权协议
- 分布式事务:
基于阿里Seata组件实现分布式事务
- 分布式锁:
基于Redission实现分布式锁
- 分布式接口幂等性和分布式限流:
基于Sentinel实现分布式限流
- 分布式文件存储:
基于FastDFS实现作分布式小文件存储
- 分布式任务调度:
基于Xxl-Job实现分布式任务调度
- 分库分表:
基于ShardingSphere实现分库分表
-
MySQL
- MySQL读写分离
- MySQL分库分表
-
Redis
- Redis缓存穿透
- Redis缓存雪崩
- Redis缓存击穿
- Redis缓存与数据库的双写一致性保障
分别执行以下命令,纯净版的CentOS7 最好先yum update
- yum -y install ntp
- ntpdate ntp1.aliyun.com
- timedatectl set-timezone Asia/Shanghai
-
yum install -y yum-utils
device-mapper-persistent-data
lvm2 -
yum-config-manager
--add-repo
https://download.docker.com/linux/centos/docker-ce.repo -
yum -y install docker-ce-19.03.1 docker-ce-cli-19.03.1 containerd.io
-
systemctl enable docker && systemctl start docker
-
vi /etc/docker/daemon.json
{ "registry-mirrors": [ "https://dockerhub.azk8s.cn", "https://reg-mirror.qiniu.com", "https://registry.docker-cn.com" ] }
-
systemctl daemon-reload
-
systemctl restart docker
- sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- sudo chmod +x /usr/local/bin/docker-compose
- sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
-
远程服务器 vi /lib/systemd/system/docker.service
-
[Service]
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
-
systemctl daemon-reload
-
systemctl restart docker.service
-
192.168.1.100:2375/info
-
hostnamectl set-hostname master
-
`
kubeadm init --kubernetes-version=1.19.2 \ --apiserver-advertise-address=192.168.1.3 \ --image-repository registry.aliyuncs.com/google_containers \ --service-cidr=10.1.0.0/16 \ --pod-network-cidr=10.244.0.0/16
`
-
mkdir -p $HOME/.kube
-
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
-
sudo chown
$(id -u):$ (id -g) $HOME/.kube/config -
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
-
kubectl apply -f ./flannel.yaml
-
ifconfig |grep flan
-
kubectl get po -n kube-system
Coding不易,点个star吧 ^=^。当然如果此项目有帮助到你,你也可以请我吃糖