冰河技术
导读
♻学习路线
  • 面试必问系列

    • 面试必问
  • 架构与模式

    • Java极简设计模式
    • 实战高并发设计模式
  • Java核心技术

    • Java8新特性
    • IOC核心技术
    • JVM调优技术
  • 容器化核心技术

    • Dockek核心技术
  • 分布式存储

    • Mycat核心技术
  • 数据库核心技术

    • MySQL基础篇
  • 服务器核心技术

    • Nginx核心技术
  • 渗透核心技术

    • 渗透实战技术
  • 底层技术
  • 源码分析
  • 基础案例
  • 实战案例
  • 面试
  • 系统架构
  • Spring6核心技术
  • 分布式事务

    • 分布式事务系列视频
  • SpringBoot
  • SpringCloudAlibaba
  • 🔥AI大模型项目

    • 一站式AI智能平台
    • AI智能客服系统
    • AI智能问答系统
    • 实战AI大模型
  • 中间件项目

    • 手写高性能Redis组件
    • 手写高性能脱敏组件
    • 手写线程池项目
    • 手写高性能SQL引擎
    • 手写高性能Polaris网关
    • 手写高性能RPC项目
  • 高并发项目

    • 分布式IM即时通讯系统(新)
    • 分布式Seckill秒杀系统
    • 实战高并发设计模式
  • 微服务项目

    • 简易电商脚手架项目
  • 手撕源码

    • 手撕Spring6源码
🌍知识星球
  • 总览

    • 《书籍汇总》
  • 出版图书

    • 《深入理解高并发编程:核心原理与案例实战》
    • 《深入理解高并发编程:JDK核心技术》
    • 《深入高平行開發:深度原理&專案實戰》
    • 《深入理解分布式事务:原理与实战》
    • 《MySQL技术大全:开发、优化与运维实战》
    • 《海量数据处理与大数据技术实战》
  • 电子书籍

    • 《实战高并发设计模式》
    • 《深入理解高并发编程(第2版)》
    • 《深入理解高并发编程(第1版)》
    • 《从零开始手写RPC框架(基础篇)》
    • 《SpringCloud Alibaba实战》
    • 《冰河的渗透实战笔记》
    • 《MySQL核心知识手册》
    • 《Spring IOC核心技术》
  • 关于自己
  • 关于学习
  • 关于职场
B站
Github
导读
♻学习路线
  • 面试必问系列

    • 面试必问
  • 架构与模式

    • Java极简设计模式
    • 实战高并发设计模式
  • Java核心技术

    • Java8新特性
    • IOC核心技术
    • JVM调优技术
  • 容器化核心技术

    • Dockek核心技术
  • 分布式存储

    • Mycat核心技术
  • 数据库核心技术

    • MySQL基础篇
  • 服务器核心技术

    • Nginx核心技术
  • 渗透核心技术

    • 渗透实战技术
  • 底层技术
  • 源码分析
  • 基础案例
  • 实战案例
  • 面试
  • 系统架构
  • Spring6核心技术
  • 分布式事务

    • 分布式事务系列视频
  • SpringBoot
  • SpringCloudAlibaba
  • 🔥AI大模型项目

    • 一站式AI智能平台
    • AI智能客服系统
    • AI智能问答系统
    • 实战AI大模型
  • 中间件项目

    • 手写高性能Redis组件
    • 手写高性能脱敏组件
    • 手写线程池项目
    • 手写高性能SQL引擎
    • 手写高性能Polaris网关
    • 手写高性能RPC项目
  • 高并发项目

    • 分布式IM即时通讯系统(新)
    • 分布式Seckill秒杀系统
    • 实战高并发设计模式
  • 微服务项目

    • 简易电商脚手架项目
  • 手撕源码

    • 手撕Spring6源码
🌍知识星球
  • 总览

    • 《书籍汇总》
  • 出版图书

    • 《深入理解高并发编程:核心原理与案例实战》
    • 《深入理解高并发编程:JDK核心技术》
    • 《深入高平行開發:深度原理&專案實戰》
    • 《深入理解分布式事务:原理与实战》
    • 《MySQL技术大全:开发、优化与运维实战》
    • 《海量数据处理与大数据技术实战》
  • 电子书籍

    • 《实战高并发设计模式》
    • 《深入理解高并发编程(第2版)》
    • 《深入理解高并发编程(第1版)》
    • 《从零开始手写RPC框架(基础篇)》
    • 《SpringCloud Alibaba实战》
    • 《冰河的渗透实战笔记》
    • 《MySQL核心知识手册》
    • 《Spring IOC核心技术》
  • 关于自己
  • 关于学习
  • 关于职场
B站
Github
  • 专栏介绍

    • 开篇:分布式高性能网关项目正式启动
    • 造轮子:大厂为何都要自研API网关
  • 第01部分:需求设计

    • 第01节:为何要学习高性能Polaris网关
    • 第02节:高性能Polaris网关的目标与挑战
    • 第03节:高性能Polaris网关需求与流程梳理
    • 第04节:高性能Polaris网关技术流程梳理
  • 第02部分:总体架构设计

    • 第01节:高性能Polaris网关总体方案目标与架构设计
    • 第02节:高性能Polaris网关数据模型设计
  • 第03部分:环境搭建

    • 第01节:高性能Polaris网关研发环境搭建
    • 第02节:高性能Polaris网关项目工程搭建
    • 第03节:高性能Polaris网关Maven私服搭建
  • 第04部分:通用模型设计

    • 第01节:请求与响应模型的顶层接口设计
    • 第02节:请求模型的顶层接口实现类设计
    • 第03节:响应模型的顶层接口实现类设计
    • 第04节:调用链路顶层接口与抽象类设计
    • 第05节:调用链路顶层接口的实现类设计
    • 第06节:网关配置规则模型实现类设计
    • 第07节:服务定义与实例模型实现类设计
    • 第08节:服务配置缓存接口与实现类模型设计
    • 第09节:网关上下文属性顶层接口与抽象类设计
    • 第10节:网关上下文属性工厂与实现类设计
    • 第11节:网关上下文顶层抽象接口设计
    • 第12节:网关上下文顶层抽象类设计
    • 第13节:网关上下文核心实现类设计
  • 第05部分:通用过滤器设计

    • 第01节:网关顶级核心过滤器接口设计
    • 第02节:网关请求与响应核心工厂类的设计与实现
    • 第03节:网关过滤器两大顶级抽象类设计与实现
    • 第04节:网关通用抽象过滤器链的设计与实现
    • 第05节:网关过滤器通用工厂类的设计与实现
    • 第06节:网关过滤器适配自定义SPI提高扩展性
    • 第07节:基于自定义SPI实现负载均衡过滤器
    • 第08节:基于自定义SPI实现超时配置过滤器
    • 第09节:基于自定义SPI实现HTTP过滤器
    • 第10节:基于自定义SPI实现RPC过滤器
    • 第11节:基于自定义SPI实现指标分析过滤器
    • 第12节:基于自定义SPI实现Mock过滤器
    • 第13节:基于自定义SPI实现灰度过滤器
    • 第14节:基于自定义SPI实现错误处理过滤器
  • 第06部分:通用处理器设计

    • 第01节:通用核心处理器的设计与实现
    • 第02节:基于disruptor设计和实现BatchEvent模式Holder
    • 第03节:基于disruptor设计和实现BatchEvent模式缓冲队列
    • 第04节:MPMC模式缓冲队列Condition接口和ThreadWait类的设计与实现
    • 第05节:MPMC模式缓冲队列自定义抽象Condition类的设计和实现
    • 第06节:MPMC模式缓冲队列自定义抽象自旋Condition的设计和实现
    • 第07节:MPMC模式缓冲队列自定义抽象等待Condition的设计和实现
    • 第08节:MPMC模式缓冲队列自定义AtomicLong的设计和实现
    • 第09节:MPMC模式缓冲队列自定义队列容量的设计和实现
    • 第10节:MPMC模式缓冲队列核心并发队列接口的设计和实现
    • 第11节:MPMC模式缓冲队列自定义并发环形队列的设计和实现
    • 第12节:MPMC模式缓冲队列自定义并发阻塞队列的设计和实现
    • 第13节:基于自定义SPI扩展实现BatchEvent模式处理器
    • 第14节:基于自定义SPI扩展实现MPMC模式处理器
  • 第07部分:核心容器设计

    • 第01节:HTTP处理器核心接口的设计与实现
    • 第02节:服务端核心处理器的设计与实现
    • 第03节:服务端连接管理器的设计与实现
    • 第04节:基于Netty的服务端整体设计与实现
    • 第05节:基于Netty的客户端整体设计与实现
  • 第08部分:核心启动流程

    • 第01节:核心启动容器类的设计与实现
    • 第02节:核心启动加载流程的设计与实现
  • 第09部分:牛刀小试

    • 第01节:实战通过高性能Polaris网关访问后端服务
  • 第10部分:注册中心

    • 第01节:注册中心通用SPI接口的设计与定义
    • 第02节:基于自定义SPI扩展实现Nacos注册中心
    • 第03节:基于自定义SPI扩展实现Zookeeper注册中心
    • 第04节:基于自定义SPI扩展实现Etcd注册中心(作业篇)
    • 第05节:基于自定义SPI扩展实现Consul注册中心(作业篇)
    • 第06节:网关启动容器整合注册中心实现服务注册与发现
  • 第11部分:负载均衡

    • 第01节:负载均衡通用SPI接口与顶级抽象类的设计与实现
    • 第02节:基于SPI扩展随机算法负载均衡策略
    • 第03节:基于SPI扩展加权随机算法负载均衡策略
    • 第04节:基于SPI扩展轮询算法负载均衡策略
    • 第05节:基于SPI扩展加权轮询算法负载均衡策略
    • 第06节:基于SPI扩展哈希算法负载均衡策略
    • 第07节:基于SPI扩展加权哈希算法负载均衡策略
    • 第08节:基于SPI扩展源IP地址哈希算法负载均衡策略
    • 第09节:基于SPI扩展源IP地址加权哈希算法负载均衡策略
    • 第10节:基于SPI扩展一致性Hash算法负载均衡策略
  • 第12部分:增强型负载均衡

    • 第01节:基于SPI扩展增强型加权随机算法负载均衡策略
    • 第02节:基于SPI扩展增强型加权轮询算法负载均衡策略
    • 第03节:基于SPI扩展增强型加权哈希算法负载均衡策略
    • 第04节:基于SPI扩展增强型源IP哈希算法负载均衡策略
    • 第05节:基于SPI扩展增强型一致性哈希算法负载均衡策略
  • 第13部分:实战负载均衡

    • 第01节:实战通过SPI加载负载均衡策略访问后端服务
  • 第14部分:配置中心

    • 第01节:配置中心通用SPI接口的设计与定义
    • 第02节:基于SPI扩展实现Nacos配置中心
    • 第03节:基于SPI扩展实现Zookeeper配置中心
    • 第04节:基于SPI扩展实现Etcd配置中心
    • 第05节:基于SPI扩展实现Consul配置中心
    • 第06节:网关启动容器整合配置中心实现服务配置
  • 第15部分:热插拔插件

    • 第01节:网关热插拔插件SPI接口与核心工厂类设计与实现
    • 第02节:网关启动容器整合热插拔插件的设计与实现
  • 第16部分:客户端SDK

    • 第01节:网关客户端SDK注解与协议的设计与定义
    • 第02节:网关客户端扫描器与抽象注册中心实现类设计
    • 第03节:网关客户端HTTP协议SDK的设计和实现
    • 第04节:网关客户端RPC协议SDK的设计和实现
    • 第05节:网关客户端WebSocket协议SDK的设计和实现
  • 第17部分:完整实战实例

    • 第01节:网关访问后端服务HTTP接口完整案例
    • 第02节:网关访问后端服务RPC接口完整案例
  • 第18部分:专栏总结

    • 高性能Polaris网关整体专栏总结

《高性能Polaris网关》环境搭建-第01节:高性能Polaris网关研发环境搭建

作者:冰河
星球:http://m6z.cn/6aeFbs
博客:https://binghe.site
文章汇总:https://binghe.site/md/all/all.html
源码获取地址:https://t.zsxq.com/0dhvFs5oR
课程视频:https://t.zsxq.com/n6Kt5

沉淀,成长,突破,帮助他人,成就自我。

  • 本章难度:★★☆☆☆
  • 本节重点:统一安装运行高性能Polaris网关所需要的研发依赖环境,重点涉及到Docker环境、docker-compose环境,以及基于docker-compose一键安装高性能Polaris网关所依赖的基础服务和其他中间件,包括:MySQL、Redis、ElasticSearch、Logstash、Kibana、Nacos、Sentinel等。另外,项目源码中会提供基于docker-compose的开箱即用的yml脚本文件。
  • 课程视频:https://t.zsxq.com/n6Kt5

大家好,我是冰河~~

在充分了解了高性能Polaris网关的需求、业务流程、技术流程和架构设计之后,在正式开始研发高性能Polaris网关之前,还需要搭建高性能Polaris网关的研发环境。

注意:本节源码的README.md文件中,已经给出了安装docker和docker-compose的命令,大家打开源码的README.md文件查看即可。

一、前言

在架构和设计高性能Polaris网关时,我们不止是希望网关能够在服务器本身上运行,也希望网关能够运行在K8S集群上。这样我们自己手写的高性能Polaris网关才能具备更好的可用性和可伸缩性。所以,在正式设计和研发Polaris网关之前,我们需要对一些基础的研发环境进行安装和测试。

二、本节诉求

还是那句话:磨刀不无砍柴功。在动手写代码之前,将所有要准备的工作完成,这样写起代码来才会更加顺畅。本节,会在CentOS7操作系统之上搭建Docker环境、docker-compose环境,基于docker-compose环境一键安装高性能Polaris网关所依赖的基础软件和中间件环境,随后会对搭建的环境进行测试。

注意:如何安装VMWare以及安装CentOS7操作系统,小伙伴们可以参见Seckill秒杀系统的《 第7章:秒杀系统基础环境搭建 》,并且本节所有环境和软件的安装,都需要CentOS7能够正常联网才行,如果小伙伴们的虚拟机不能正常联网,可以参见Seckill秒杀系统的《 第7章:秒杀系统基础环境搭建 》一章的内容解决。

三、安装Docker环境

之前安装的操作系统为CentOS7版本,所以,这里以CentOS7为例安装Docker环境,具体安装步骤如下所示。

3.1 查看操作系统内核版本

由于Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10,所以这里先查看下安装的CentOS7操作系统的内核版本。在,命令行输入如下命令。

uname -srm

输出的结果信息如下所示。

Linux 3.10.0-1160.el7.x86_64 x86_64

可以看到,内核版本是3.10,符合要求。

3.2 卸载旧版本Docker

如果之前安装过旧版本的Docker,则可以执行如下命令卸载。

yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine docker-ce

3.3 安装gcc环境

安装gcc环境主要是为了更加顺利的安装Docker环境,在命令行分别执行如下两条命令来安装gcc环境。

yum -y install gcc
yum -y install gcc-c++

3.4 安装yum工具

在命令行执行如下命令安装yum工具。

yum install -y yum-utils device-mapper-persistent-data lvm2 --skip-broken

3.5 设置Docker镜像仓库

这里,我将Docker的镜像仓库设置为阿里镜像源,执行如下命令即可。

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

执行如下命令将docker-ce.repo镜像仓库配置文件中的镜像源修改成阿里镜像源。

sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

3.6 更新yum包软件索引

更新yum包软件索引后,执行yum命令安装软件会快一些,在命令行执行如下命令更新yum包软件索引。

yum makecache fast

3.7 安装Docker

在命令行执行如下命令安装Docker。

yum -y install docker-ce docker-ce-cli containerd.io

3.8 启动Docker

在命令行执行如下命令启动Docker。

systemctl start docker

3.9 设置Docker开机自启动

在命令行执行如下命令设置Docker开机自启动。

systemctl enable docker

3.10 查看Docker版本

在命令行输入如下命令查看Docker版本。

docker version

输出的结果信息如下所示。

Client: Docker Engine - Community
 Version:           23.0.6
 API version:       1.42
 Go version:        go1.19.9
 Git commit:        ef23cbc
 Built:             Fri May  5 21:21:29 2023
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          23.0.6
  API version:      1.42 (minimum version 1.12)
  Go version:       go1.19.9
  Git commit:       9dbdbd4
  Built:            Fri May  5 21:20:38 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.21
  GitCommit:        3dce8eb055cbb6872793272b4f20ed16117344f8
 runc:
  Version:          1.1.7
  GitCommit:        v1.1.7-0-g860f061
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

3.11 Docker常用命令

这里,给大家列举一些常用的Docker命令,如下所示。

systemctl daemon-reload //重载系统服务
systemctl list-unit-files --type service //查看全部服务命令
systemctl status docker  // 查看docker服务状态
systemctl enable docker //设置docker开机自启动
systemctl disable docker // 关闭docker开机启动
systemctl start docker // 启动docker服务
systemctl stop docker // 停止docker服务
systemctl restart docker // 重启docker服务

四、安装docker-compose环境

安装docker-compose环境相对就比较简单了,在命令行执行如下命令下载并安装docker-compose。

curl -SL https://github.com/docker/compose/releases/download/v2.17.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

下载并安装成功后,使用如下命令创建docker-compose软链接。

ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

随后查看docker-compose版本,如下所示。

[root@binghe]# docker-compose version
Docker Compose version v2.17.3

可以看到,安装的docker-compose版本为2.17.3,说明docker-compose安装成功。

有些小伙伴由于网络问题,可能下载docker-compose会失败,这里冰河将其放到了专栏对应的源码工程的environment/docker-compose目录下,如图1-1。


五、一键安装依赖环境

高性能Polaris网关在设计上,不仅会运行在服务器本身上,还会运行在K8S集群上。所以,我们在Docker环境中安装一些基础软件和中间件,比如MySQL、Redis、Sentinel、Nacos、prometheus、grafana、ElasticSearch、Logstash、Kinaba等等,如果这些环境都需要大家一个个手动安装的话,既费时又费力,安装过程中可能还会出现各种各样的错误。所以,这里,冰河基于docker-compose提供开箱即用的一件部署配置,安装好docker-compose后,只需要运行一个命令就可以一键安装所需要的各种基础服务和中间件。

这些基于docker-compose安装基础服务和中间件的配置文件位于项目的/environment目录下,具体说明如图1-2所示。

查看完整文章

加入冰河技术知识星球,解锁完整技术文章、小册、视频与完整代码

在 GitHub 上编辑此页
上次更新: 2026/4/29 16:18
Contributors: binghe001
Next
第02节:高性能Polaris网关项目工程搭建
阅读全文
×

扫码或搜索:冰河技术
发送:290992
即可立即永久解锁本站全部文章

星球会员
跳转链接