2022-01-18 作者 :觉醒网站网 围观 : 0次
大家好,今天小编关注到一个比较有意思的话题,就是关于虚拟主机运行java的问题,于是小编就整理了1个相关介绍虚拟主机运行java的解答,让我们一起看看吧。
您好,您可能没有理解什么叫分布式
分布式系统架构是建立在网络之上的软件系统。
内聚性是指每一个数据库分布节点高度自治,有本地的数据库管理系统。
透明性是指每一个数据库分布节点对用户的应用来说都是透明的,看不出是本地还是远程。
可以,但是不推荐。
分布式的目的是分工合作,提高系统的整体可用性!
假设一个系统S,拆分为s1,s2,s3。如果s1挂了,那可能s1负责的功能无法使用,s2,s3负责的功能还是能使用的。比如2018年双11,淘宝的地址服务挂了,买家无法修改收货地址。但是并不影响下单。
假设s1,s2,s3部署在一台机器上,会降低整体可用性!如果只是单纯的s1,s2,s3挂了,只会影响部分功能,但是如果这台机器挂了,那整个系统就都挂了。
如果s1,s2,s3部署在不同的机器上,那么其中一台机器挂了,也不会导致系统整体不可用。
如果只是自己学习分布式搭建,或开发环境自测简单的业务功能实现是完全可以的。
分布式环境中间的网络节点可以在公网,内网,本机,只要节点间能通信。
在一些业务量还不高的分布式系统线上环境也会有单机多节点的部署情况。
单机多节点部署:
1.不同节点端口不同,如dubbo_provider,tomcat,jeety,undertow等所有容器都可指定固定通信端口。
2.装虚拟机,每个虚拟机上一套应用,每台虚拟机一个ip通信
缺点:应用安装繁琐,管理不便,会分散很多精力在环境问题上。
3.这几年流行的做法:docker+k8s,
优点:应用镜像安装一个pull搞定,资源率比虚拟机高n倍,甚至能在别人的镜像仓库找到现有的分布式demo;强烈建议了解一下
谢邀~
技术上可行,但是架构上不建议。
几种部署方式,第一个不太建议,后两种方案都还可以:
直接部署,不同的软件、中间件占用不同的端口:例如数据库Mysql占用3306端口,多套不同的程序使用Tomcat部署,占用不同的端口,或者使用Spring Boot的话,启动时候指定不同的端口;相同的应用前面挂一个负载均衡,或者直接安装注册中心到这台机器上。其余用到的软件,也一窝蜂的安装在同一台机器上。
虚拟化:使用虚拟化技术,将一台物理机,虚拟成多台虚拟机,然后分别在每个虚拟机中,安装不同的软件、中间件,最终完成部署,彼此相互隔离。
容器技术:比如Docker;和虚拟化类似(详情参考我的另一个回答:《docker容器与虚拟机有什么区别?》),容器技术更轻量级、更容易部署和移植、并且可以弹性伸缩;相同配置的服务器,部署容器的数量会比虚拟机多很多。
主要出于两方面的考虑:
我想楼主是想在一台机子上模拟部署一下分布式架构,答案是可以的。
方案一: 开好多台虚拟机,这样就可以当好多台机部署
方案二: 用docket代替方案一的VM,这样资源占用可以少很多
方案三: 用minikube在单机模拟k8s集群进行分布式部署,操作和真正的k8s集群基本没区别
当然,单机的cpu和内存要尽量高点
当然可以了,不然我的两个mysql服务主从复制,读写分离,nginx+两个SpringCloud微服务应用怎么部署?
废话不多说,先来看看我的mysql主从复制+读写分离怎么搭建在一台机器上的。。
1,windows下载boot2docker软件,安装注册之后,使用boot2docker ssh开启docker服务;
2,拉取mysql镜像,分别以端口3006,3008端口进行两个服务的启动,脚本类似这个:docker run --name mysql1 -p 3308:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql,
3,使用下载boot2docker自带的oracle VM VirtualBox将3008,3006端口暴露,这样两个mysql服务就可以提供使用了;
4,配置主从复制+读写分离(自行百度)!
可以看到,我的windows下面的docker镜像有mysql,redis,nginx,zookeeper等等,我运行项目的时候,全部确实都可以运行在我的一台机器上,所有的服务确实是“分布”的;也就是说分布式架构的所有服务可以全部部署到一台服务器上;
我们可以这么做分布式架构,但是计算机不允许。。运行那么多的服务,基本每个服务都要卡成狗了!
分布式系统之所以需要就是因为单机系统成为了高性能,高稳定性,高持续性的瓶颈!
到此,以上就是小编对于虚拟主机运行java的问题就介绍到这了,希望介绍关于虚拟主机运行java的1点解答对大家有用。