存档2019年11月29日

微服务框架

两大配方

网关 [Zuul] Spring Cloud Gateway

1:阿里系

Dubbo
Nacos Zookeeper
SpringBoot /SpringMVC
采用服务端发现
Sentinel流控
链路监控 Pinpoint

2:Spring Cloud

Spring Cloud Netflix Eureka 服务注册发现
SpringBoot
Ribbon 客户端负载均衡器 RestTemplate/feign / Zuul
Hystrix流控
链路监控 Spring Cloud Sleuth & Zipkin

Eureka线上环境至少两台相互注册,三台两两相互注册以达到高可用,采用客户端发现,REST异构时常用的Nodejs有eureka-js-client客户端.

服务注册与发现对比 AP

如果要求一致性,则选择zookeeper、Consul,如金融行业 CP设计,保证了一致性,集群搭建的时候,某个节点失效,则会进行选举行的leader,或者半数以上节点不可用,则无法提供服务,因此可用性没法满足
如果要求可用性,则Eureka,如电商系统 AP原则,无主从节点,一个节点挂了,自动切换其他节点可以使用,去中心化
Nacos:
Nacos是阿里开源的,Nacos 支持基于 DNS 和基于 RPC 的服务发现。在Spring Cloud中使用Nacos,只需要先下载 Nacos 并启动 Nacos server,Nacos只需要简单的配置就可以完成服务的注册发现。
Nacos除了服务的注册发现之外,还支持动态配置服务。动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。

微服务可见性

Metrics 跟踪所有可以用数字来表示的信息内容,用于度量
Tracing 跟踪单次请求中发生了什么,用于优化,提优
Logging 跟踪零散的文字描述,用于日志

Prometheus 采取拉取数据
ELK解决方案 采集离合零散的信息的处理,索引等
LogStash 离散的日志收集,处理,过滤,格式转换
ElasticSearch 搜索引擎,进行索引,方便检索
Kibana 展示数据

消息中间

RabbitMQ 集成
Kafka
ActiveMQ

综合对比:

  1. ActiveMQ: 历史悠久的开源项目,已经在很多产品中得到应用,实现了JMS1.1规范,可以和spring-jms轻松融合,实现了多种协议,不够轻巧(源代码比RocketMQ多),支持持久化到数据库,对队列数较多的情况支持不好。
  2. RabbitMq:
    它比kafka成熟,支持AMQP事务处理,在可靠性上,RabbitMq超过kafka,在性能方面超过ActiveMQ。
  3. Kafka:
    Kafka设计的初衷就是处理日志的,不支持AMQP事务处理,可以看做是一个日志系统,针对性很强,所以它并没有具备一个成熟MQ应该具备的特性,Kafka的性能(吞吐量、tps)比RabbitMq要强,如果用来做大数据量的快速处理是比RabbitMq有优势的

综合使用

网关:[Zuul]
网关流控:spring-cloud-zuul-ratelimit
服务与配制: Nacos
身份认证:Spring Cloud OAuth2
消息中间:RabbitMQ Kafka
服务流控:Sentinel

Buffalo LS-WVL/E上安装git

所需工具

PuTTY.exe

acp_commander

一。改机root
1. 在盘位1装上一块全新硬盘(没分区的盘)。

2. 启动NAS,然后按下机器后面function,这会把机器还原为出厂设置并格式化硬盘(慎:这会清除硬盘上的所有数据,如果你的硬盘上有数据,要先备份)。过了几分钟,设置完成后NAS自动重启。打开浏览器,输入NAS的地址(默认是192.168.1.100),如果能打开设置界面,就表示NAS准备就绪了。

不能进入先需安装系统- NASNAVI
点击NASNAVI软件的REFRESH,刷新会提示找到带有EM字样的NAS图标,此时NAS会显示NAS获取到的IP,暂时还不能访问到NAS的页面。如果提示更改IP,请直接取消,因为NAS已经从路由器上获得了IP。确认IP为以前路由器分配的以后,进入下一步。

安装系统-上传系统进入解压好的固件目录内,运行LSUpdater.exe,上传(UPDATE)固件,稍等即可。此过程可能持续20分钟。直到提示升级成功。

安装系统-改LSUpdater.ini【可选,改了以后记得重新打开LSUPDATER.EXE】

  1. [Application]
  2. Title = BUFFALO LinkStation Series Updater Ver.1.70
  3. WaitReboot = 1200
  4. WaitFormat = 600
  5. WaitFileSend = 600
  6. WaitDiscover = 120
  7. [Target]
  8. ProductID = 0x00000011
  9. ProductID2 = 0x00000012
  10. ProductID3 = 0x00000013
  11. ProductID4 = 0x00000014
  12. ProductID5 = 0x00003006
  13. ProductID6 = 0x00003007
  14. ProductID7 = 0x00000015
  15. ProductID8 = 0x00000016
  16. ProductID9 = 0x00003008
  17. ProductID10 = 0x00004001
  18. ProductID11 = 0x00000017
  19. ProductID12 = 0x00000019
  20. ProductID13 = 0x00000020
  21. ProductID14 = 0x00003010
  22. Name = LinkStation
  23. [Flags]
  24. VersionCheck = 0
  25. NoFormatting = 0

复制代码

VersionCheck = 1————1表示检查版本、0表示不检查版本,0用于降级
NoFormatting = 1———–1表示不格式化硬盘、0表示格式化硬盘

3. 准备一台windows机器,关闭windows防火墙。安装jre,地址http://java.com/zh_CN/download/manual.jsp

4. 下载acp_commander.jar。打开windows命令行,切换到acp_commander.jar所在的目录,输入以下命令以测试机器能否破解

java -jar acp_commander.jar -t 192.168.1.100 -ip 192.168.1.100 -pw password -c “ls /”
注意-pw后的参数”password”是web设置界面admin用户的登录密码,默认就是password,如果成功的话就能看到输出的根目录列表了!

5. 把root密码改为123456,你也可以改成别的。

java -jar acp_commander.jar -t 192.168.1.100 -ip 192.168.1.100 -pw password -c “(echo sweetopen;echo sweetopen)|passwd”
6. 修改sshd设置以允许root用户登录

java -jar acp_commander.jar -t 192.168.1.100 -ip 192.168.1.100 -pw password -c “sed -i ‘s/PermitRootLogin no/PermitRootLogin yes/g’ /etc/sshd_config”
7. 修改sshd设置,关闭PAM

java -jar acp_commander.jar -t 192.168.1.100 -ip 192.168.1.100 -pw password -c “sed -i ‘s/UsePAM yes/UsePAM no/g’ /etc/sshd_config”
8. 重启ssh服务

java -jar acp_commander.jar -t 192.168.1.100 -ip 192.168.1.100 -pw password -c “/etc/init.d/sshd.sh restart”
现在你可以用ssh登录LS-WVL了。

(注:以上几条命令可能会出错,注意看屏幕输出。如果对还有什么疑问,可以参考这篇文章http://i.592.net/?post=360,或者google一下,网上有很多关于改机的文章。)

二。安装git软件
1. 用PuTTY登录LS-WVL/E(默认地址192.168.1.100),用户root,密码是你在第一部分的步骤5设置的。

2.输入以下命令:

mkdir /mnt/disk1/temp
cd /mnt/disk1/temp
wget http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/ls-mvkw-bootstrap_1.2-7_arm.xsh
sh ./ls-mvkw-bootstrap_1.2-7_arm.xsh

做了阵列的

mkdir /mnt/array1/tmp
cd /mnt/array1/tmp/
wget http://ipkg.nslu2-linux.org/feeds/optware/cs05q3armel/cross/stable/teraprov2-bootstrap_1.2-7_arm.xsh
sh ./teraprov2-bootstrap_1.2-7_arm.xsh

ipkg update
ipkg upgrade
ipkg install git
三。配置
这部分操作是创建并配置好一个用户,使其能通过ssh登录系统,专门用于进行git相关操作

1. 以root登录,创建git用户

groupadd git(创建组git)
useradd -g git -m git(创建用户git,属于组git,同时创建用户主目录/home/git)
passwd git(设置git用户密码)
然后根据提示输入两遍密码

2. 修改ssh服务器的配置文件/etc/sshd_config,输入

vi sshd_config
然后编辑如下参数设置

StrictModes no(如果.ssh目录及相关文件的权限和拥有人owner等都能严格正确设置,可以设为yes)

UsePrivilegeSeparation no(这是必须的,否则git用户无法登录)

PermitUserEnvironment yes(必须的,使ssh加载用户自定义的环境配置文件)

3. 配置git用户环境变量文件,设置PATH(如果不设置好用户的PATH,运行git命令将提示”command not found”)。

输入如下命令:

cd /home/git(进入用户git的主目录)
mkdir .ssh
echo PATH=/mnt/disk1/.optware/bin:/opt/bin:/opt/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin >> .ssh/environment

echo PATH=/mnt//array1/.optware/bin:/opt/bin:/opt/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin >> .ssh/environment
chown -R git.git .ssh(更改.ssh目录及其中文件的owner为用户git)
chmod 700 .ssh(更改.ssh目录的权限)
chmod 600 .ssh/environment
4. 创建git项目的存储目录。输入命令

mkdir -m 777 /mnt/disk1/gits(创建目录gits来存放所有的git项目,权限777)

mkdir -m 777 /mnt/array1/gits
5. 重启sshd(见第一部分步骤8),然后用PuTTY以git用户登录,应该就能登上了。

四。测试
1.通过ssh以用户git登录,创建一个git项目testproj。输入命令

mkdir /mnt/disk1/gits/testproj.git(创建项目的目录)
cd /mnt/disk1/gits/testproj.git
git init –bare(初始化git仓库)
2. 在windows客户机上安装tortoiseGit和mysisgit并设置好,你就可以从服务器上clone项目testproj了。(具体操作不在本文讨论范围,请自行google之)

如果客户机是linux或mac,并且安装好了git,你可以直接输入命令

git clone git@192.168.1.100:/mnt/disk1/gits/testproj.git
回车后输入用户git的密码,就把testproj项目给clone下来了

五。其它
一开始我按照网上的很多教程root后,发现只有root用户能够通过ssh登录,其它用户都不能登录。经过几天在网上苦苦的搜寻,终于找到了原因和解决办法:ssh服务器在底层使用了sftp这个工具,这个工具有一个配置文件/etc/sftponly_config,这个配置文件里禁止了用户(在Buffalo LS-WVL的Web配置页面能看到的所有用户和组)的ssh登录,而且这个配置文件每次ssh服务器启动时都会重新生成,所以你改这个配置文件也没有用。
解决办法有两个:
1. 既然在Web配置页面能看到的所有用户和组(默认有用户admin,guest,组包括admin,guest,hdusers)都不能ssh登录,那么Web配置页面里看不到的用户和组,不就不受这个限制了吗。所以解决方法就是通过ssh以root登录,新建一个组git,然后再创建一个用户git,使其属于这个新建的组(创建用户时如果不指定其所属的组,就默认属于hdusers组,这个是配置文件/etc/sftponly_config里面禁止ssh登录的),这样这个用户git就可以登录了。(具体操作见上文第三部分步骤1)
2. 第二个解决方法就是想办法修改这个配置文件/etc/sftponly_config。打开ssh服务器的启动脚本/etc/init.d/sshd.sh,你可以在启动ssh服务器的代码前找到这样一行“nas_configgen -c sftp”,就是这行代码重新生成了配置文件/etc/sftponly_config,只要在这一行后面再加一行代码,把sftponly_config改一改,把所有的”allowssh no”全部改成”allowssh yes”,问题不就解决了吗。
(事实上这是我最开始找到的办法,但是由于操作比较复杂,而且有一定的安全隐患,所以还是建议使用第一个解决方法)
用vi来编辑/etc/init.d/sshd.sh,输入以下命令

vi /etc/init.d/sshd.sh
移动光标,在sshd_start()方法中找到“nas_configgen -c sftp”这一行,将光标移至行末,按a键,然后在这行之后插入一行:

sed -i ‘s/allowssh no/allowssh yes/g’ /etc/sftponly_config
按ESC键,输入”:wq”(双引号中间的3个字母)然后回车,这就保存退出了。