您当前的位置:首页 > 电脑百科 > 站长技术 > 服务器

使用SpringBoot+Dubbo搭建微服务笔记

时间:2019-08-22 10:17:54  来源:  作者:

一、Dubbo介绍

引用官方的一段介绍

Apache Dubbo (incubating) |ˈdʌbəʊ| is a high-performance, JAVA based RPC framework open-sourced by Alibaba. As in many RPC systems, dubbo is based around the idea of defining a service, specifying the methods that can be called remotely with their parameters and return types. On the server side, the server implements this interface and runs a dubbo server to handle client calls. On the client side, the client has a stub that provides the same methods as the server.

Dubbo是阿里出的一个高性能的分布式微服务框架,它的特点是性能高、界面友好、文档齐全(特别是中文文档),是很多中小型公司快速搭建微服务的首选技术。前段时间被阿里重新进行维护,并进入Apache孵化器。迁移到Apache后也推出了新的starter,简单试用后感觉不错,为此特地写下这一系列笔记,用以记录。(整个项目的源码在最后一章,感兴趣的童鞋可以下载自己搭建试试,也可以将其作为脚手架搭建你自己的微服务)

二、搭建注册中心

在dubbo中,每一个服务都是分布式的,消费者与提供者的关系并不是一对一的关系,而是一对多,并且服务提供者的实例位置是未知的,如果都由开发者使用静态文件去维护这个关系显示不合适的,一方面是徒增工作量,另一方面是灵活度不高,如果服务提供者更换了服务器地址,那么需要重新配置等,所以目前比较推崇的方案是所有服务提供者均主动将自己的信息注册到同个地方中,而消费者只要一律从这个地方取他需要的东西即可,这个地方就是所谓的注册中心。目前dubbo可以选择的注册中心包括zookeeper、redis等,一般建议使用zookeeper,下面演示一下在windows中如何搭建zookeeper注册中心。

1、下载zookeeper

直接在官网的镜像站下 (https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/current/zookeeper-3.4.12.tar.gz)

2、解压并配置zookeeper

为了演示,直接使用官方示例配置。把解压出来的zookeeper-3.4.12confzoo_sample.cfg 文件名改为zoo.cfg即可,如下图:

十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 

3、运行zookeeper注册中心

双击运行/zookeeper-3.4.12/bin/zkServer.cmd,出现以下窗口代表运行成功。

十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 

三、搭建Dubbo Admin

在Dubbo中,一大杀器就是它的可视化监控界面,在这个界面中可以查看服务者、提供者的数量、状态等,并对服务降级、容错、屏蔽等提供了可视化操作。下面演示如何搭建Dubbo Admin。

1、下载源码并解压

点击下面地址下载dubbo admin项目源码 (https://codeload.github.com/apache/incubator-dubbo-ops/zip/master)

下载后解压出来,如下图:

十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 

2、打包

打开cmd,进入第一步解压出来的dubbo-admin文件夹中,执行mvn clean package

(ps:要是提示未存在mvn命令,就把maven文件夹的bin目录添加到系统环境变量PATH中)

十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 

3、配置dubbo admin

打开上面那步打出来的war包(incubator-dubbo-ops-masterdubbo-admintargetdubbo-admin-2.0.0.war),编辑WEB-INF文件夹中的dubbo.properties文件,如下图

十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 

将红框处的IP地址改为你的注册中心的地址,由于我们的注册中心是在本地运行的,故此处无需做修改。

十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 

4、运行Dubbo Admin

将war包改名为ROOT.war后放到Tomcat的webApp目录中,然后运行tomcat。使用浏览器打开http://127.0.0.1:8080,提示输入账号密码,账号和密码默认均为root,登陆后的界面如下:

十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 

四、搭建API项目

由于Dubbo是采用RPC调用方式,这也是与Spring Cloud比较大的区别之一。在Spring Cloud中,服务通过HTTP接口提供给其它服务调用,对于调用者与被调用者来说,只要双方保证满足http接口的契约即可,但是在dubbo中,是严格要求调用接口的类路径、参数等双方一致。所以需要构建一个API项目,该项目里面存放服务接口即公共实体,双方依赖这个项目完成远程调用。

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.czh.dubbo</groupId>
 <artifactId>dubbo-common</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <properties>
 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 <java.version>1.8</java.version>
 </properties>
</project>

公共实体-People.java

package com.czh.dubbo.common.entity;
import java.io.Serializable;
public class People implements Serializable {
 /**
 * 
 */
 private static final long serialVersionUID = 1415852192397895853L;
 // 人员编号
 private int id;
 // 姓名
 private String name;
 public int getId() {
 return id;
 }
 public void setId(int id) {
 this.id = id;
 }
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
 @Override
 public String toString() {
 return "People [id=" + id + ", name=" + name + "]";
 }
}

公共服务接口-PeopleService.java

package com.czh.dubbo.common.service;
import com.czh.dubbo.common.entity.People;
public interface PeopleService {
 People getPeople(People people);
}

五、搭建服务提供者

服务提供者就是被消费者所调用的,它需要实现公共服务接口,并通过dubbo把自己的服务暴露出来。

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.czh</groupId>
 <artifactId>dubbo-provider</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <packaging>jar</packaging>
 <name>dubbo-provider</name>
 <description>Demo project for Spring Boot</description>
 <parent>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-parent</artifactId>
 <version>1.5.12.RELEASE</version>
 <relativePath /> <!-- lookup parent from repository -->
 </parent>
 <properties>
 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 <java.version>1.8</java.version>
 </properties>
 <dependencies>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter</artifactId>
 </dependency>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-test</artifactId>
 <scope>test</scope>
 </dependency>
 <!-- https://mvnrepository.com/artifact/com.alibaba.boot/dubbo-spring-boot-project -->
 <dependency>
 <groupId>com.alibaba.boot</groupId>
 <artifactId>dubbo-spring-boot-starter</artifactId>
 <version>0.1.0</version>
 </dependency>
 <!-- https://mvnrepository.com/artifact/com.101tec/zkclient -->
 <dependency>
 <groupId>com.101tec</groupId>
 <artifactId>zkclient</artifactId>
 <version>0.10</version>
 </dependency>
 <dependency>
 <groupId>com.czh.dubbo</groupId>
 <artifactId>dubbo-common</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 </dependency>
 </dependencies>
 <build>
 <plugins>
 <plugin>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-maven-plugin</artifactId>
 </plugin>
 </plugins>
 </build>
</project>

com.alibaba.boot是迁移过后出的一个最新的dubbo spring boot starter,也是目前官方推荐使用的。值得注意的是,该starter不包含注册中心客户端,需要自己配置。一般推荐使用zookeeper作为注册中心,所以需要手动引入zkclient。

application.properties

#web服务端口,由于我们不需要使用web服务,所以将其设为随机端口
server.port=-1
#dubbo服务端口,我们无需知道dubbo服务运行在哪个端口,故也将其设为随机端口
dubbo.protocol.port = -1
#dubbo服务名称
dubbo.application.name = dubbo-provider
#dubbo服务所在包路径
dubbo.scan.basePackages = com.czh.dubbo.provider.service
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
#设置服务的日志输出级别为debug级
logging.level.com.czh.dubbo.provider.service=debug

服务实现类PeopleServiceImpl

package com.czh.dubbo.provider.service;
import java.util.Random;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.alibaba.dubbo.config.annotation.Service;
import com.czh.dubbo.common.entity.People;
import com.czh.dubbo.common.service.PeopleService;
//注意,这里的service注解用的不是spring的注解,而是com.alibaba.dubbo.config.annotation.Service;
@Service
public class PeopleServiceImpl implements PeopleService{
 private static final Logger logger = LoggerFactory.getLogger(PeopleServiceImpl.class);
 /**
 * 这个方法的作用是接收传过来的People实体,将其ID赋为随机数
 */
 @Override
 public People getPeople(People people) {
 people.setId(new Random().nextInt(10000));
 logger.debug("People:{},ID:{}",people.getName(),people.getId());
 return people;
 }
}

六、搭建服务消费者

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.czh</groupId>
 <artifactId>dubbo-consumer</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <packaging>jar</packaging>
 <name>dubbo-consumer</name>
 <description>Demo project for Spring Boot</description>
 <parent>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-parent</artifactId>
 <version>1.5.12.RELEASE</version>
 <relativePath /> <!-- lookup parent from repository -->
 </parent>
 <properties>
 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 <java.version>1.8</java.version>
 </properties>
 <dependencies>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-test</artifactId>
 <scope>test</scope>
 </dependency>
 <!-- https://mvnrepository.com/artifact/com.alibaba.boot/dubbo-spring-boot-project -->
 <dependency>
 <groupId>com.alibaba.boot</groupId>
 <artifactId>dubbo-spring-boot-starter</artifactId>
 <version>0.1.0</version>
 </dependency>
 <!-- https://mvnrepository.com/artifact/com.101tec/zkclient -->
 <dependency>
 <groupId>com.101tec</groupId>
 <artifactId>zkclient</artifactId>
 <version>0.10</version>
 </dependency>
 <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
 <dependency>
 <groupId>com.alibaba</groupId>
 <artifactId>fastjson</artifactId>
 <version>1.2.47</version>
 </dependency>
 <dependency>
 <groupId>com.czh.dubbo</groupId>
 <artifactId>dubbo-common</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 </dependency>
 </dependencies>
 <build>
 <plugins>
 <plugin>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-maven-plugin</artifactId>
 </plugin>
 </plugins>
 </build>
</project>

application.properties

#web服务端口
server.port=80
#消费者名称
dubbo.application.name=dubbo-consumer
#需要使用到提供者服务的包路径
dubbo.scan.base-packages=com.czh.dubbo.consumer.controller
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181

控制器PeopleController

package com.czh.dubbo.consumer.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.dubbo.config.annotation.Reference;
import com.czh.dubbo.common.entity.People;
import com.czh.dubbo.common.service.PeopleService;
@RestController
public class PeopleController {
 @Reference
 private PeopleService peopleService;
 @GetMapping("/people/{name}")
 public People getPeople(@PathVariable("name") String name) {
 People people = new People();
 people.setName(name);
 return peopleService.getPeople(people);
 }
}

至此,整个项目便搭建完毕,三个项目的项目结构如下

十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 

七、上线运行

1、打包运行

安装API项目到本地maven仓库

在dubbo-common项目的pom.xml文件上点击右键,Run as - Maven install

十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 

打包服务提供者与服务消费者

在这两个项目的pom.xml文件执行以下操作:点击右键,Run as - Maven build… 在弹出的选项框中Golas 填写:clean package,如下图

十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 

点击run,打包成功后如下图:

十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 

将两个项目的target文件夹中拿出打好的jar包放到某个文件夹下备用,如下图

十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 

使用java -jar 命令依次运行dubbo-provider 与dubbo-consumer,顺序不能搞错,并且得确保provider启动完成后再启动consumer,否则后期会出现空指针异常。

至此,我们总共启动了四个服务,分别是zookeeper注册中心、dubbo-admin、dubbo-provider、dubbo-consumer,如下图:

十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 

打开dubbo监控网页检查服务消费者和提供者是否已经注册成功:

十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 


十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 

可以看到,提供者与消费者已成功注册到注册中心

2、基本调用

使用浏览器访问此地址http://127.0.0.1/people/test,观察服务提供者的控制台输出内容

十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 

后台控制台已输出日志了,证明调用成功,那么浏览器是否能够拿到数据呢?

十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 

可以看到浏览器也拿到数据了,证明已经成功完成调用了。

3、容错与屏蔽

容错

顾名思义就是当服务提供者出现异常时,消费者是否能够正常处理,在这里,我们关闭掉服务提供者,再进行调用,观察是否会报错

十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 

可以观察到前端报异常了。我们进入dubbo-admin在消费者中把服务容错开启,如下

十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 

再进行调用可以看到

十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 

可以看到此时调用后返回确实为空,证明容错生效。

屏蔽

当对某个服务启动屏蔽时,此时消费者调用该服务时均会返回空对象。首先我们需要确保提供者与消费者均已启动,然后在消费者中对提供者进行屏蔽,如下图

十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 

再进行服务调用

十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 

可以看到此时调用后返回确实为空,证明屏蔽生效。

其实屏蔽与容错还有更高级的玩法,最基本的屏蔽是返回空对象,我们甚至可以自定义返回内容。

进入动态配置,选择新增

十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 

编辑红框处的内容如下图:

十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 

再访问网页

十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 

可以看到确实屏蔽成功,并返回我们自定义的内容,注意,此时并未调用到提供者服务。

3、服务降级

为了测试服务降级,我们需要再启动一个服务提供者

十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 

可以看到目前两个服务提供者

然后我们再连续多次访问网页

十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 

两个服务接收到的请求数量是差不多的,此时我们对第二个服务进行降级,为了测试明显,这里我们连续降两次级,将其降到0.25,再连续调用,观察结果

十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 


十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 

已将第二个服务提供者降级到0.25,此时再连续访问

十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 

此时很明显可以看到第二个服务接收的请求比第一个少很多,证明降级成功。

4、负载均衡

dubbo提供了三个基本的负载均衡策略,分别是 随机访问、轮询、最少并发,从字面上也可以得知是什么意思,在这里我演示一下轮询的负载均衡策略。在dubbo-admin中,选择负载均衡功能,点击新增,如下图

十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 

按下图进行配置

十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 

老样子,这次我们连续访问网页10次

十分钟搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服务笔记

 

可以看到两个服务刚好各均分了五个请求,负载均衡成功!

八、写在最后

相比于spring cloud,个人认为dubbo提供的功能相对简单,但每个功能又很实用,且使用起来十分方便(因为有可视化的web界面操作),更适合中小型公司进行微服务搭建。



Tags:微服务   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
▶ 企业级项目结构封装释义 如果你刚毕业,作为Java新手程序员进入一家企业,拿到代码之后,你有什么感觉呢?如果你没有听过多模块、分布式这类的概念,那么多半会傻眼。为什么一个项...【详细内容】
2021-12-20  Tags: 微服务  点击:(9)  评论:(0)  加入收藏
前面谈过很多关于数字化转型,云原生,微服务方面的文章。虽然自己一直做大集团的SOA集成平台咨询规划和建设项目,但是当前传统企业数字化转型,国产化和自主可控,云原生,微服务是不...【详细内容】
2021-12-06  Tags: 微服务  点击:(23)  评论:(0)  加入收藏
微服务看似是完美的解决方案。从理论上来说,微服务提高了开发速度,而且还可以单独扩展应用的某个部分。但实际上,微服务带有一定的隐形成本。我认为,没有亲自动手构建微服务的经历,就无法真正了解其复杂性。...【详细内容】
2021-11-26  Tags: 微服务  点击:(35)  评论:(0)  加入收藏
实施微服务架构,我们一直在遵循一个实践原则:每个微服务要有自己独立的数据库,避免数据库层面的耦合。这种理所当然感觉好像不需要多加思考,就是应该这样做; 图片来源:James Lewi...【详细内容】
2021-10-11  Tags: 微服务  点击:(42)  评论:(0)  加入收藏
在今年的NGINX Sprint 2.0虚拟大会上,NGINX(来自流行的开源web服务器/负载均衡器和反向代理背后的公司F5),发布了NGINX现代应用参考架构(MARA)。该公司在一篇博客文章中说,这将帮...【详细内容】
2021-09-26  Tags: 微服务  点击:(61)  评论:(0)  加入收藏
今天,字节跳动正式宣布开源 CloudWeGo。这是一套以 Go 语言为核心、专注于微服务通信与治理的中间件集合,具有高性能、可扩展、高可靠的特点。项目地址:https://github.com/clo...【详细内容】
2021-09-08  Tags: 微服务  点击:(93)  评论:(0)  加入收藏
1. Spring Boot 与 Spring Cloud Spring Boot 是用于编写微服务的 Java 基础框架。在Spring Cloud 提供了各种构建全栈微服务的功能。构建小型和大型系统都适合。由于控制反...【详细内容】
2021-08-31  Tags: 微服务  点击:(163)  评论:(0)  加入收藏
现有问题在 EFK 日志收集 篇中,我们讲解了如何利用 EFK 收集 Kubernetes 集群日志。但是,还存在如下问题。 Elasticsearch 以单节点的形式部署,不能满足生产环境的要求 Fluentd...【详细内容】
2021-08-13  Tags: 微服务  点击:(104)  评论:(0)  加入收藏
在 Java 和 Kotlin 中, 除了使用Spring Boot创建微服务外,还有很多其他的替代方案。 名称 版本 发布时间 开发商 GitHub ...【详细内容】
2021-08-06  Tags: 微服务  点击:(175)  评论:(0)  加入收藏
一、微服务的现状及未来1.服务架构的演变1.1 单体架构&emsp;&emsp;单体架构应该是我们最先接触到的架构实现了,在单体架构中使用经典的三层模型,即表现层,业务逻辑层和数据访问...【详细内容】
2021-07-22  Tags: 微服务  点击:(125)  评论:(0)  加入收藏
▌简易百科推荐
阿里云镜像源地址及安装网站地址https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b111kK44P更新源之前把之前的国外的镜像先备份一下 切换到yumcd...【详细内容】
2021-12-27  干程序那些事    Tags:CentOS7镜像   点击:(1)  评论:(0)  加入收藏
前言在实现TCP长连接功能中,客户端断线重连是一个很常见的问题,当我们使用netty实现断线重连时,是否考虑过如下几个问题: 如何监听到客户端和服务端连接断开 ? 如何实现断线后重...【详细内容】
2021-12-24  程序猿阿嘴  CSDN  Tags:Netty   点击:(12)  评论:(0)  加入收藏
一. 配置yum源在目录 /etc/yum.repos.d/ 下新建文件 google-chrome.repovim /etc/yum.repos.d/google-chrome.repo按i进入编辑模式写入如下内容:[google-chrome]name=googl...【详细内容】
2021-12-23  有云转晴    Tags:chrome   点击:(7)  评论:(0)  加入收藏
一. HTTP gzip压缩,概述 request header中声明Accept-Encoding : gzip,告知服务器客户端接受gzip的数据 response body,同时加入以下header:Content-Encoding: gzip:表明bo...【详细内容】
2021-12-22  java乐园    Tags:gzip压缩   点击:(9)  评论:(0)  加入收藏
yum -y install gcc automake autoconf libtool makeadduser testpasswd testmkdir /tmp/exploitln -s /usr/bin/ping /tmp/exploit/targetexec 3< /tmp/exploit/targetls -...【详细内容】
2021-12-22  SofM    Tags:Centos7   点击:(7)  评论:(0)  加入收藏
Windows操作系统和Linux操作系统有何区别?Windows操作系统:需支付版权费用,(华为云已购买正版版权,在华为云购买云服务器的用户安装系统时无需额外付费),界面化的操作系统对用户使...【详细内容】
2021-12-21  卷毛琴姨    Tags:云服务器   点击:(6)  评论:(0)  加入收藏
参考资料:Hive3.1.2安装指南_厦大数据库实验室博客Hive学习(一) 安装 环境:CentOS 7 + Hadoop3.2 + Hive3.1 - 一个人、一座城 - 博客园1.安装hive1.1下载地址hive镜像路径 ht...【详细内容】
2021-12-20  zebra-08    Tags:Hive   点击:(9)  评论:(0)  加入收藏
以下是服务器安全加固的步骤,本文以腾讯云的CentOS7.7版本为例来介绍,如果你使用的是秘钥登录服务器1-5步骤可以跳过。1、设置复杂密码服务器设置大写、小写、特殊字符、数字...【详细内容】
2021-12-20  网安人    Tags:服务器   点击:(7)  评论:(0)  加入收藏
项目中,遇到了一个问题,就是PDF等文档不能够在线预览,预览时会报错。错误描述浏览器的console中,显示如下错误:nginx代理服务报Mixed Content: The page at ******** was loaded...【详细内容】
2021-12-17  mdong    Tags:Nginx   点击:(7)  评论:(0)  加入收藏
转自: https://kermsite.com/p/wt-ssh/由于格式问题,部分链接、表格可能会失效,若失效请访问原文密码登录 以及 通过密钥实现免密码登录Dec 15, 2021阅读时长: 6 分钟简介Windo...【详细内容】
2021-12-17  LaLiLi    Tags:SSH连接   点击:(16)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条