Nacos组件:环境配置


Nacos组件简介

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理

Nacos就是微服务架构中服务注册中心以及统一配置中心,用来替换原来的(eureka,consul)以及config组件

使用nacos必须安装JDK和maven

image

JDK安装

1、安装Nacos必须安装jdk,把rpm安装包的jdk上传到linux服务器上

image

2、输入rpm -ivh jdk-11.0.11_linux-x64_bin.rpm安装jdk

3、输入find / -name java查看java安装目录,进入bin目录,查看

image

4、输入vim /etc/profile配置linux系统环境变量,光标移到最后面按i键编辑添加环境变量

export JAVA_HOME=/usr/java/jdk-11.0.11
export PATH=$PATH:$JAVA_HOME/bin

image
按ESC,再按:wq保存退出

5、退出之后输入source /etc/profile重新加载环境变量

6、输入java -sersion查看是否配置成功

image

Maven安装

1、下载apache-maven-3.6.3-bin.tar.gz https://downloads.apache.org/maven/maven-3/

2、把tar包上传到linux系统的 /usr 目录下

3、输入tar -xvzf apache-maven-3.6.3-bin.tar.gz解压maven

image

4、输入vim /etc/profile命令打开环境变量配置

5、拉到最后面按i键配置环境变量

export MAVEN_HOME=/usr/apache-maven-3.6.3export PATH=$PATH:$MAVEN_HOME/bin

image

6、按ESC,再输入:wq保存并退出

7、执行source /etc/profile命令重新加载配置文件

8、输入mvn -v查看是否安装成功

image

Nacos安装

![image](uploading...)

输入cd返回root目录

1、下载Nacos安装包 https://nacos.io/zh-cn/index.html

2、把Nacos安装包上传到linux服务器上(我上传的是root文件夹)

image

3、nacaos是gz压缩包,输入tar -zxvf nacos-server-1.3.1.tar.gz解压缩到当前目录

image

4、查看nacos目录结构

image

5、启动nacos服务

ncaos默认集群启动,启动时单机启动,必须在bin目录中执行./startup.sh -m standalone
image

6、输入cd ..返回上一级目录,再输入tail -f logs/nacos.log查看日志,是否启动成功

7、访问nacos web地址 http://ip地址/8848/nacos

image

image


环境搭建


SpringCloudAlibaba简介

springcloud

spring团队开源微服务工具集,帮助我们快速构建分布式系统(微服务系统),提供spring组织 netflix

springcloud alibaba

alibaba团队开源微服务工具集,帮助我们快速构建分布式系统(微服务系统) 提供alibaba解决方案

springcloud alibaba是阿里云为分布式应用开发提供了一站式解决方案。它包含了开发分布式应用程序所需的所有组件,使您可以轻松地使用springcloud开发应用程序。
有了阿里云,你只需要添加一些注解和少量的配置,就可以将Spring云应用连接到阿里的分布式解决方案上,用阿里中间件搭建一个分布式应用系统。

spring cloud alibaba 特点

技术支持springcloud alibabaspringcloud netflix
服务降级和流量控制sentinelhystrix
服务注册与发现nacoseureka 、consul
分布式配置& 事件驱动消息总线nacosconfig & bus
分布式事务&dubboseta

springcloud 组件

技术支持springcloud alibabaspringcloud netflix
服务注册与发现组件nacoseureka consul
服务间通信组件restTemplate+ribbon,OpenfeignrestTemplate+ribbon,Openfeign
服务降级和熔断sentinelhystrix hystrix dashboard
服务网关组件gatewaygateway
统一配置中心组件 消息总线组件nacosconfig bus

微服务项目实战开发 springcloud netfilx + springcloud alibaba +springcloud spring

五大组件选择

  • 1.服务注册中心 ====> Nacos (alibaba)

  • 2.服务通信间的负载均衡 ====> RestTemplate+Ribbon (Netflix)或者Openfeign (Spring)

  • 3.服务熔断和服务降级 ====> sentinel (alibaba)

  • 4.服务网关组件 ====> Gateway (Spring)

  • 5.统一配置中心组件 ====>Nacos (alibaba)

SpringCloudAlibaba环境搭建

1、新建一个空项目

2、在空项目中新建一个模块

3、添加相关依赖

<!--继承springboot父项目-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.5.RELEASE</version>
    </parent>

    <!--定义版本号-->
    <properties>
        <spring.cloud.version>Hoxton.SR6</spring.cloud.version>
        <spring.cloud.alibaba.version>2.2.1.RELEASE</spring.cloud.alibaba.version>
    </properties>

    <!--维护依赖-->
    <dependencyManagement>
        <dependencies>
        <!--维护springcloud-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring.cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        <!--维护springcloud alibaba-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring.cloud.alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>


Log Parser(微软网站下载)是微软公司出品的日志分析工具,它功能强大,使用简单,可以分析基于文本的日志文件、XML 文件、CSV(逗号分隔符)文件,以及操作系统的事件日志、注册表、文件系统、Active Directory。它可以像使用 SQL 语句一样查询分析这些数据,甚至可以把分析结果以各种图表的形式展现出来。

Log Parser 的安装很简单,没有什么特别的,安装之后,可以在安装目录下找到 LogParser.chm 这个文件,该文件是 LogParser 的帮助文件,为英语语言。

我们简单介绍一下在命令提示符中如何使用 Log Parser。

LogParser.exe 为可执行文件,后跟一个使用 SQL 结构的语句参数进行查询。

C:Program FilesLog Parser 2.2>LogParser "SELECT TOP 10 * FROM System ORDER BY RecordNumber DESC"

从系统日志(可以从事件查看器中找到)中,选出按 RecordNumber 逆序的前 10 条记录。RecordNumber 是 System 中的一个字段。

我们也可以生成图表:

C:Program FilesLog Parser 2.2>LogParser "SELECT EventID, Count(*) as 出现次数 INTO Chart.gif FROM System GROUP BY EventID" -chartType:PieExploded3D -groupSize:500x350 -chartTitle:"事件分类"

上述代码中还加了其它参数来确定图表的类型、大小等,得到类似如下图表:

Log Parser 生成的图表

是不是非常的简单,而且很振奋人心,不过这些都不是我们介绍的重点,我们的重点是如何利用 C# 去执行 Log Parser。

通过 .NET Framework 的 COM interop (COM 交互操作)特性,可以很方便地在 .NET 应用程序中使用 Log Parser,.NET Framework 的 COM interop 是通过 Runtime Callable Wrappers (RCW) 来实现对 COM 的操作的,RCW 是 .NET 中的一个类。

我们用 Log Parser 和 C# 打造网站访问统计分析系统,就是用 C# 调用 Log Parser,利用 Log Parser 去分析 IIS 的日志文件。我们这里的日志文件是 W3C 格式的。

程序

我们建立一个 .cs 文件,引入:

using LogQuery = Interop.MSUtil.LogQueryClassClass; using IISInputFormat = Interop.MSUtil.COMIISW3CInputContextClassClass; using LogRecordSet = Interop.MSUtil.ILogRecordset;

类中关键代码如下:

LogQuery oLogQuery = new LogQuery(); IISInputFormat oIISInputFormat = new IISInputFormat(); string query = @"SELECT COUNT(DISTINCT c-ip) AS hits                   FROM 'C:WINDOWSsystem32LogfilesW3SVC1ex070820.log'                   WHERE cs-uri-stem like '%.asp'                   AND sc-status=200"; LogRecordSet oRecordSet = oLogQuery.Execute(query, oIISInputFormat); if (!oRecordSet.atEnd()) {     hits = (int)oRecordSet.getRecord().getValue("hits"); } oRecordSet.close();

看得出来跟使用数据库没有多大区别,查询语句中 c-ip、cs-uri-stem、sc-status 等都是日志文件的字段,直接打开日志文件可以找到这些内容。

编译

程序就完成了,不过还不能直接运行,我们还要对它编译,我们这里是编译成 exe,当然您也可以把它编译成一个 DLL,供 ASP.NET 一类的文件调用。

需要两步,第一步:

C:Program FilesMicrosoft Visual Studio 8SDKv2.0BinTlbImp.exe C:Program FilesLog Parser 2.2LogParser.dll /out:E:Interop.MSUtil.dll

直接下载 Interop.MSUtil.dll

TlbImp 全称是 Type Library Importer,它是用于创建 RCW,它通常位于 .NET Framework 的 Bin 目录下。

如果您使用的是 Visual Studio 2005,也可以不使用命令提示符的方式,而在工程中直接导入。

第二步:

C:WINDOWSMicrosoft.NETFrameworkv2.0.50727csc /target:exe /reference:E:Interop.MSUtil.dll /out:E:logAnal.exe E:logAnal.cs

logAnal.cs 是我们前面写的程序,logAnal.exe 是要生成的 exe 文件,Interop.MSUtil.dll 是前面生成的 DLL。

完成了

就是这么简单,没有什么复杂的,通过改变查询语句,可以实现多种统计。

1、导出为execl能打开的格式 logparser -i:evt -o:csv "select * from c:sec.evt" > d:sec.csv logparser -i:evt -o:csv "select * from security" > d:sec.csv logparser -i:evt -o:nat "select * into a.txt from security"logparser -i:evt -o:csv "select TimeGenerated,EventID,Message from c:sec.evt" > d:sec.csvlogparser -i:evt -o:TPL -tpl:EventLogs.tpl "select * into b.html from d:sec.evt"使用条件语句: SELECT TimeGenerated, EventTypeName, SourceName FROM System WHERE ( SourceName = 'Service Control Manager' AND EventID >= 7024) OR       ( SourceName = 'W32Time')SELECT * FROM Security WHERE Message LIKE '%logon%'A、在iis日志中搜索特殊链接 LogParser -o:csv "SELECT * into a.csv FROM iis.log where EXTRACT_EXTENSION(cs-uri-stem) LIKE 'asp'"B、最经典的例子,对日志中的url进行归并统计 LogParser -o:csv "SELECT cs-uri-stem, COUNT(*) into a.csv FROM iis.log GROUP BY cs-uri-stem"c、统计所有日志 LogParser -o:csv "SELECT cs-uri-stem, COUNT(*)into a.csv FROM ex*.log GROUP BY cs-uri-stem" LogParser -i:iisw3c -o:csv "SELECT cs-uri-stem, COUNT(*)into a.csv FROM *.log GROUP BY cs-uri-stem"d、对文件后缀进行排名 LogParser -i:iisw3c -o:csv "SELECT EXTRACT_EXTENSION(cs-uri-stem) AS PageType, COUNT(*) into a.cssv FROM *.log GROUP BY PageType"e、得到所有的不重复的链接 LogParser -i:iisw3c -o:csv "SELECT distinct cs-uri-stem into a.csv FROM *.log"  2、生成百分比饼图 LogParser "SELECT EventID, COUNT(*) AS Times INTO Chart.gif FROM d: mpsec.evt GROUP BY EventID ORDER BY Times DESC" -chartType:PieExploded3D -chartTitle:"Status Codes" 3、http日志 LogParser file:querytop.sql -o:chart -chartType:Bar3d -chartTitle:"TOP 10 URL"querytop.sql: SELECT TOP 10 cs-uri-stem AS Url,    COUNT(*) AS Hits INTO Urls.gif FROM <1> GROUP BY Url ORDER BY Hits DESC  4、在html页面里找关键字 Return the lines in an HTML document that contain links to other pages: LogParser "SELECT Text FROM http://www.microsoft.adatum.com WHERE Text LIKE '%href%'" -i:TEXTLINE  5、MD5 Hashes of System Files LogParser "SELECT Path, HASHMD5_FILE(Path) into a.txt FROM C:WindowsSystem32*.exe" -i:FS -recurse:0  6、Print the 10 largest files on the C: drive: LogParser "SELECT TOP 10 Path, Name, Size FROM C:*.* ORDER BY Size DESC" -i:FS  7、获得本机登陆帐户的查看 LogParser.exe -o:nat "SELECT RESOLVE_SID(Sid) AS Account FROM Security WHERE EventID IN (540; 528)"  8、获得系统日志的分类详细信息 LogParser "SELECT DISTINCT SourceName, EventID,SourceName,message INTO Event_*.csv FROM security" -i:EVT -o:CSV LogParser "SELECT DISTINCT SourceName, EventID,SourceName,message INTO Event_*.csv FROM System" -i:EVT -o:CSV 根据id分类 LogParser "SELECT DISTINCT eventid, EventID,SourceName,message INTO Event_*.csv FROM System" -i:EVT -o:CSV LogParser "SELECT DISTINCT eventid, EventID,SourceName,message INTO Event_*.csv FROM security" -i:EVT -o:CSV  9、生成图形界面日志 LogParser "SELECT 'Event ID:', EventID, SYSTEM_TIMESTAMP(),message FROM security" -i:EVT -o:datagrid  10、生成一个Web页面 LogParser file:d:EventLogs.sql?EventLog=security -o:TPL -tpl:d:EventLogs.tpl LogParser file:d:EventLogs.sql?EventLog=system -o:TPL -tpl:d:EventLogs.tpl  11、在iis日志里查看返回代码分布饼图 LogParser "SELECT sc-status, COUNT(*) AS Times INTO Chart.gif FROM iis.log GROUP BY sc-status ORDER BY Times DESC" -chartType:PieExploded3D -chartTitle:"Status Codes"   12、在所有日志中手机前10位的排名 LogParser file:querytop.sql -o:chart -chartType:Bar3d -chartTitle:"TOP 10 URL"querytop.sql:SELECT TOP 10 cs-uri-stem AS Url,    COUNT(*) AS Hits INTO Urls.gif FROM ex*.log GROUP BY Url ORDER BY Hits DESC   13、检索目录下所有文件的所有的信息 logparser "select * into a.csv from c:x-scan*.*" -i:fs -o:csv查看每个源IP发了多少个包 LogParser "SELECT srcip ,count(*) into a.csv FROM a.cap group by srcip" -fmode:tcpip -o:csv查看每个源端口的包的个数 LogParser "SELECT srcport ,count(*) into a.csv FROM a.cap group by srcport" -fmode:tcpip -o:csv归并所有srcip,dstip,srcport一样的包,得到个数 LogParser "SELECT srcip,dstip,srcport ,count(*) into a.csv FROM a.cap group by srcip,dstip,srcport" -fmode:tcpip -o:csv归并所有tcpflags的包 LogParser "SELECT srcip,srcport,dstip,dstport,tcpflags,count(*) into a.csv FROM a.cap where tcpflags='AF' group by srcip,srcport,dstip,dstport,tcpflags" -fmode:tcpip -o:csvtcpflags的分布饼图 LogParser "SELECT tcpflags,count(*) into a.gif FROM a.cap group by tcpflags " -fmode:tcpip -chartType:PieExploded3D -chartTitle:"Status Codes" LogParser "SELECT tcpflags,count(*) into a.csv FROM a.cap group by tcpflags " -fmode:tcpip -o:csv


需求:监控日志,如果有攻击,就把ip加入黑名单

分析:

1、打开日志文件

2、把ip地址拿出来

3、判断每一个ip出现的次数,如果大于50次的话,加入黑名单

4、每分钟读一次

log样式:

178.210.90.90 - - [04/Jun/2017:03:44:13 +0800] "GET /wp-includes/logo_img.php HTTP/1.0" 302 161 "http://nnzhp.cn/wp-includes/logo_img.php" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4" "10.3.152.221"178.210.90.90 - - [04/Jun/2017:03:44:13 +0800] "GET /blog HTTP/1.0" 301 233 "http://nnzhp.cn/wp-includes/logo_img.php" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4" "10.3.152.221"178.210.90.90 - - [04/Jun/2017:03:44:15 +0800] "GET /blog/ HTTP/1.0" 200 38278 "http://nnzhp.cn/wp-includes/logo_img.php" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4" "10.3.152.221"66.249.75.29 - - [04/Jun/2017:03:45:55 +0800] "GET /bbs/forum.php?mod=forumdisplay&fid=574&filter=hot HTTP/1.1" 200 17482 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"37.9.169.20 - - [04/Jun/2017:03:47:59 +0800] "GET /wp-admin/security.php HTTP/1.1" 302 161 "http://nnzhp.cn/wp-admin/s

实现:

import time
point = 0 #每次记录文件指针的位置while True:#持续读取实时更新的log
    all_IP = []
    f=open('access.log',encoding='utf-8')    #不能用read来直接读文件,文件从磁盘打开载入内存,进入cpu分析,若文件过大,内存会被占满,电脑回卡死
    f.seek(point)  # 移动文件指针,已统计过的IP不再额外统计
    for line in f:#直接循环一个文件对象的话,每次循环的是文件的每一行
        IP = line.split('-')[0].strip()#取出IP
        all_IP.append(IP)#将IP放入列表
    point = f.tell()  # 记录了指针的位置
    all_IP_set = set(all_IP)#集合天生去重
    for i in all_IP_set:#循环集合比循环列表效率高,已去重
        if all_IP.count(i) > 50:            print('加入黑名单的IP是%s,一分钟内出现了%s次'%(i,all_IP.count(i)))
    f.close()
    time.sleep(60)#每分钟读一次


SpringCloud 微服务架构(基础详解)

微服务架构的概念

SpringCloud微服务更新

SpringCloud微服务架构项目搭建注意事项

RestTemplate

微服务注册中心

Eureka(停更)

Zookeeper

Consul

Nacos

负载均衡服务调用

Ribbon负载均衡服务调用

OpenFeign服务接口调用

服务降级、熔断、限流、隔离

Hystrix(停更)

服务网关

SpringCloud Gateway

服务配置

SpringCloud Config

消息配置

SpringCloud Bus服务总线

SpringCloud Stream消息驱动

分布式请求链路追踪

SpringCloud Sleuth分布式请求链路追踪

SpringCloud Alibaba 基础详解

SpringCloud Alibaba 概念

SpringCloud Alibaba Nacos 服务注册中心

SpringCloud Alibaba Nacos 服务配置中心

SpringCloud Alibaba Nacos 集群与持久化

SpringCloud Alibaba Sentinel 服务熔断降级、限流

SpringCloud Alibaba Seata 分布式事务框架

微服务架构的概念

微服务架构是一种架构模式,它提倡将单一的应用程序划分成一组小的服务,服务之间互相协调、互相融合,为用户提供最终价值,每个服务在其独立的进程中,服务与服务间采用轻量级通信机制互相协作(通常是基于HTTP协议的Restful API)。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应当尽量避免统一的、集中的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。


SpringCloud微服务更新

打钩代表目前在用,打叉表示停更或被替代



SpringCloud微服务架构项目搭建注意事项

一、项目构建:

1、约定 > 配置 > 编码

二、微服务整体聚合父工程

1、新建简单工程

2、聚合父工程名字

3、选择 maven 版本

4、工程名字

5、字符编码

6、注解生效激活

7、java 编译版本选择 1.8

8、File Type过滤

三、对父工程的pom管理的jar包内容优化

1、将maven默认 <package>jar</package> 改为 <package>pom</package>

2、统一jar包管理版本 <properies></properies>

3、<dependencyManager>子模块继承之后,提供作用:锁定版本 + 子 modlue 不用写 groupId 和 version,对jar包的管理值负责声明,不负责引入。

四、微服务模块的构建步骤

1、建 module

2、改 pom

3、写 yml

4、主启动

5、业务类


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

RestTemplate

概念: RestTemplate提供了便捷访问Http服务的方法,是一种简单便捷的访问 restful服务模板类,是spring提供的用于访问Rest服务的客户端模板工具集。参考spring官网。



使用: (url,requestMap,ResponseBean.class)这三个参数分别代表如下:

1、REST请求地址

2、请求参数

3、HTTP响应转换被转换成的对象类型


将RestTemplate注入到spring容器中,交给spring进行管理:


@Configuration

public class ApplicationContextConfig{


@Bean

public RestTemplate getRestTemplate(){

return new RestTemplate();

}

}

1

2

3

4

5

6

7

8

微服务注册中心

CAP原则:https://blog.csdn.net/qq_36763419/article/details/120014638


Eureka(停更)

SpringCloud 与 Eureka 的集成:https://blog.csdn.net/qq_36763419/article/details/119734826


Zookeeper

SpringCloud 与 Zookeeper 的集成:https://blog.csdn.net/qq_36763419/article/details/119954590


Consul

SpringCloud 与 Consul 的集成:https://blog.csdn.net/qq_36763419/article/details/119987591


Nacos

负载均衡服务调用

Ribbon负载均衡服务调用

SpringCloud 与 Ribbon 的集成:https://blog.csdn.net/qq_36763419/article/details/120015109


OpenFeign服务接口调用

SpringCloud 与 OpenFeign 的集成:https://blog.csdn.net/qq_36763419/article/details/120063156


服务降级、熔断、限流、隔离

Hystrix(停更)

SpringCloud 与 Hystrix 的集成:https://blog.csdn.net/qq_36763419/article/details/120119872


服务网关

SpringCloud Gateway

SpringCloud 与 Gateway 的集成:https://blog.csdn.net/qq_36763419/article/details/120492044


服务配置

SpringCloud Config

SpringCloud 与 Config 的集成:https://blog.csdn.net/qq_36763419/article/details/120765489


消息配置

SpringCloud Bus服务总线

SpringCloud 与 Bus + RabbitMQ + Config 的集成:https://blog.csdn.net/qq_36763419/article/details/120851600


SpringCloud Stream消息驱动

SpringCloud 与 Stream + RabbitMQ 的集成:https://blog.csdn.net/qq_36763419/article/details/120969333


分布式请求链路追踪

SpringCloud Sleuth分布式请求链路追踪

SpringCloud 与 Sleuth + Zipkin 的集成:https://blog.csdn.net/qq_36763419/article/details/121065169


SpringCloud Alibaba 基础详解

SpringCloud Alibaba 概念

SpringCloud 与SpringCloud Alibaba 的集成:https://blog.csdn.net/qq_36763419/article/details/121127017


SpringCloud Alibaba Nacos 服务注册中心

SpringCloud 与SpringCloud Alibaba Nacos 服务注册中心的集成:https://blog.csdn.net/qq_36763419/article/details/121167710


SpringCloud Alibaba Nacos 服务配置中心

Nacos 作为服务配置中心:https://blog.csdn.net/qq_36763419/article/details/121188285


SpringCloud Alibaba Nacos 集群与持久化

Nginx(高可用) + Nacos(集群) + mysql(主从复制): https://blog.csdn.net/qq_36763419/article/details/121179174


SpringCloud Alibaba Sentinel 服务熔断降级、限流

SpringCloud 与 Sentinel 服务熔断降级、限流的集成:https://blog.csdn.net/qq_36763419/article/details/121325199


SpringCloud Alibaba Seata 分布式事务框架

SpringCloud 与 Seata 分布式事务的集成:https://blog.csdn.net/qq_36763419/article/details/121563729

持续更新中。。。。。。

————————————————

版权声明:本文为CSDN博主「陌守」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_36763419/article/details/119250022