单体架构:正常的程序实例,负责完成项目所有工作,单进程
弊端:一个进程要处理所有的工作,压力大
解决方案:分布式
简单分布式:将一个项目按工作内容拆分成多个项目实例,通过HttpClient相互调用
弊端:但一个实例出现断网或报错等故障时,下游实例将跟着出现故障,
需要维护的服务端口也变多,可用性低
解决方案:集群(Nginx)
集群(Nginx):最常用最见效的高可用手段,上端省心,负载均衡,
作用很多
文章链接:Nginx下载和使用_XiaoGuaiSs的博客-优快云博客我将同一个项目启动了三个实例,相当于发布了三个不同端口的服务,ip端口要与nginx配置对应。下载成功后打开 \nginx-x.xx.x\conf\nginx.conf 文件。2.或者到nginx.exe目录下cmd执行start nginx启动。成功访问且显示被访问端口为5726,刷新继续。尝试访问nginx配置的端口8080。显示5727,继续应该就是5728。启动成功后会弹出一个新的命令行窗口。1.双击启动nginx.exe。修改以下部分代码即可。nginx简单使用成功。https://blog.youkuaiyun.com/m0_37894611/article/details/130349702 弊端:不可伸缩,需要人工配置,重启
解决方案:服务注册发现(Consul)服务注册发现(Consul):程序启动时,服务注册且只注册一次;
服务注册于发现(Consul):
提供心跳机制确认存活状态,能主动发现新进和退出的服务;
分布式锁、数据共享存储 ACL
文章链接:服务注册与发现-Consul(Window)_XiaoGuaiSs的博客-优快云博客Install | Consul | HashiCorp DeveloperExplore Consul product documentation, tutorials, and examples.https://developer.hashicorp.com/consul/downloadshttps://blog.youkuaiyun.com/m0_37894611/article/details/130349754 consul集群:服务注册与发现-Consul(Linux)_XiaoGuaiSs的博客-优快云博客生成项目镜像,docker build -t 镜像名称 -f dockerfile文件目录 项目目录。我们再继续添加 consul容器node2、node3,注意改成自己的IP 172.17.0.2,我使用了Linux本地的ip不知道为什么绑定不到一起,就是用了nide1给的ip地址,尝试是成功的,不知道是否会有影响。Docker 在Linux-CentOS上的安装使用_XiaoGuaiSs的博客-优快云博客。可以通过命令查看主从信息,看看当前谁是Leader,谁是follower。
https://blog.youkuaiyun.com/m0_37894611/article/details/130439415 弊端:负载均衡需要手动实现,可使用网关或封装实现;虽然能主动检测服务异常并退出,但没有新的服务出现,需要【失效转移】|【流量自适应】(根据流量压力自动新增服务实例)
解决方案:失效转移-K8S,流量自适应(真正的动态伸缩),实现Consul集群
随着IT发展,项目越来越复杂,硬件更新飞速,所有进程都放在一起比较混乱,需要不同类进程之间相互隔离,但隔离对服务器损耗严重,成本很高。最终出现容器技术,可以把容器当作虚拟机,有完整的操作系统,有资源限制,区别在于内核共享,操作系统阉割,比虚拟机更高效。
容器技术利用了Linux的LXC--可以做资源隔离,资源管控,但不那么好用,容器技术就是包装了一下,提供更好用的方式。
Docker容器:Build once run anywhere
文章链接:Docker 在Linux-CentOS上的安装使用_XiaoGuaiSs的博客-优快云博客如果提示 [Warning] IPv4 forwarding is disabled. Networking will not work.然后将项目拷贝至linux 的project目录下(随意)。生成项目镜像,docker build -t 镜像名称 -f dockerfile文件目录 项目目录。右键点击netcore项目-添加-Docker支持,选择Linux。直接Ctrl+c停止,然后执行启动ipv4命令。然后通过ip加端口访问下接口或页面。再重新执行构建镜像,显示成功。启动镜像,获得容器实例。https://blog.youkuaiyun.com/m0_37894611/article/details/130404139