分布式架构利用开源框架之五大服务组件(Ngnix,Zookeeper,Dubbo,solr,MQ)

本文深入探讨了分布式架构中五大核心服务组件:Ngnix、Zookeeper、Dubbo、Solr及MQ的功能与应用场景,包括负载均衡、服务注册与发现、远程调用、全文检索及消息中间件等关键作用。

分布式架构利用开源框架之五大服务组件(Ngnix,Zookeeper,Dubbo,solr,MQ)

​​

下图是一个分布式架构的案例,用这个案例来做下面的说明,服务组件是因为部署起来是一个服务。

 

  1. 第一大服务组件:Ngnix   用来做负载均衡或者反向代理
  2. 弟二大服务组件:Zookeeper   用来做注册中心服务,服务的注册与发现
  3. 第三大服务组件:Dubbo  用来做Rpc远程调用服务
  4. 第四大服务组件:solr(ElasticSearch)   用来做全文检索服务
  5. 第五大服务组件:MQ   用于消息中间件(ActiveMQ,RabbitMQ)

 

 

 

看图片我们可以分析出几个架构的层次,从左到右,依次是:物理配置,网站应用层,网站服务层,数据存储层,大数据处理层。以下框架都是通过Jar包组件的形式导入项目,他们不是以服务组件形式。

  1. SpringMVC   作为MVC访问框架,如上图:这个框架应用于上图的网站应用层。
  2. MyBatis和MyBatis plus 作为ORM数据访问的框架,如上图:这个框架应用于上图的数据存储层。
  3. Redis 分布式缓存,也是内存缓存,特别在session缓存的应用,连接可用jedis,如上图:这个服务应用于上图的数据存储层,用于数据缓存。
  4. ActiveMQ 消息队列中间件,连接可用JMS,如:Spring-jms,如上图:这个服务应用于网站服务层,可集群,主从部署。实现消息同步和异步。
  5. Disconf  分布式配置,基于Zookeeper,如上图:这个服务应用于网站服务层,可主从部署,界面化配置服务。
  6. Shiro  轻量级权限框架,如上图:这个框架大部分应用于网站应用层,对其网站进行安全和权限做控制。
  7. Nginx   HAProxy  LVS 根据需要选择不同的负载均衡方式,Ngnix可做反向代理。
  8. SSO 单点登录,如上图:用于网站应用层和服务层。
  9. Mail  邮件  如: Java Mail,如上图:用于网站服务层。
  10. Maven nexus   Maven私服,如上图:用于网站服务层,自己的服务包的管理器
  11. Dokcer  虚拟化服务,自动化部署
  12. Netty Mina 模块通讯,长短连接,如上图,这两个框架用于网站服务层,是分布式服务之间的通讯。
  13. Hession Hession2   Java序列化,架构中的数据传输底层序列化,如:Dobbo就有Hession组件
  14. MyCat  Sharding-jdbc分布式数据库中间件,如上图:这两个中间件常用于数据库分表,分库,主从数据库方式来调用数据。
  15. Hadoop Spark 大数据处理框架,如上图:这两个框架应用于大数据处理层。

 

### 配置本地服务器通过 SSH 隧道和 Nginx 在阿里云服务器上实现公网访问 要通过 SSH 隧道和 Nginx 实现本地服务器的公网访问,需要完成以下几个步骤:建立 SSH 反向隧道、配置 Nginx 反向代理,并确保阿里云服务器的防火墙规则允许必要的端口通信。 #### 1. 建立 SSH 反向隧道 使用 SSH 的 `-R` 参数建立反向隧道,将本地服务暴露到阿里云服务器的指定端口。假设本地服务器运行在 `localhost:8000`,阿里云服务器的公网 IP 为 `123.56.103.93`,并且希望将阿里云服务器的 `7689` 端口映射到本地的 `8000` 端口,可以执行以下命令: ```bash ssh -vnNT -R 7689:localhost:8000 root@123.56.103.93 ``` 此命令将在阿里云服务器上创建一个监听 `7689` 端口的 SSH 隧道,并将所有请求转发到本地计算机的 `8000` 端口[^1]。 #### 2. 配置 Nginx 反向代理 接下来,需要配置 Nginx 以反向代理的方式将公网请求转发到 SSH 隧道的端口。编辑 Nginx 的配置文件 `/etc/nginx/nginx.conf`,添加如下配置: ```nginx server { listen 80; server_name 115.120.246.30; # HTTP 到 HTTPS 的 301 重定向 return 301 https://$host$request_uri; } server { listen 443 ssl; server_name 115.120.246.30; ssl_certificate /etc/nginx/ssl/selfsigned.crt; ssl_certificate_key /etc/nginx/ssl/selfsigned.key; location / { proxy_pass http://127.0.0.1:7689; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ``` 上述配置中,Nginx 监听 `443` 端口(HTTPS)和 `80` 端口(HTTP),并将所有请求通过反向代理转发到本地的 `7689` 端口,该端口正是 SSH 隧道所监听的端口[^2]。 #### 3. 检查并重新加载 Nginx 配置 在修改完 Nginx 配置文件后,需要检查配置是否正确,并重新加载配置以使其生效: ```bash sudo nginx -t sudo systemctl reload nginx ``` #### 4. 配置阿里云服务器的防火墙规则 确保阿里云服务器的防火墙规则允许外部访问所需的端口(如 `80`、`443` 和 `7689`)。可以通过阿里云控制台或使用 `ufw` 工具进行配置: ```bash sudo ufw allow 80 sudo ufw allow 443 sudo ufw allow 7689 ``` #### 5. 测试公网访问 完成上述配置后,可以通过浏览器访问阿里云服务器的公网 IP 地址(如 `https://115.120.246.30`)来测试是否能够成功访问本地服务器的服务[^2]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Frank浩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值