《分布式服务架构》读后感

最近乘着项目的空档期,大略的读了一下《分布式服务架构》一书。这本书首先介绍了分布式微服务与SOA服务的对比。从而衍生出对应的相关微服务相关的知识点。 它主要讲的不是技术,而是一种习惯。代码,架构,风格以及后期运维的习惯。

其实现在自己写的项目虽然用到了微服务的很多特点,但是自我感觉和书中的微服务理念有些矛盾。比如现在项目将所有向外部的RPC接口都集中于另一个项目之中,造成后期更新的时候需要两个项目都做对应调整。

下面总结了一下本书我觉得最有用处的章节,以供自己回忆复习:

1.整个服务搭建的流程集团已经很标准化。Pandora Boot已经是主流的框架。它相当于一个升级版的Spring boot。继承了Spring的所有优点:例如通过MAVEN的定制化标签,快速创建spring boot应用等等。 全程没有XML配置,也不需要代码生成。

2.目前公司大部分使用的是HSF服务取代了Dubbo。 原因是HSF在处理注册中心十万级别应用比dubbo更有优势,更轻。还有服务降级,服务熔断,链路跟踪等优势。

3.大数据的log日志管理:现在使用的是Slf4j框架来做日志管理。它的优势就是应用程序可以只依赖于Slf4j来实现日志打印,具体的日志实现是由配置来决定使用log4j还是logback等。这样就可以在不改变应用代码的前提下切换底层的日志实现。

Tips:项目在打日志的时候也会对应用的性能造成影响(因为在某些并发的时候,日志可能会加锁)。对于这个解决方式:根据不同的环境:生产环境,日常环境,预发环境来精炼自己的log。比如在像生产环境中比较稳定的环境中就可以适当的去掉一些DEBUG级别的log。第二可以在logback-spring.xml配置使用异步的appender。as shown below:

4.本书最大的收获就是给出了很多Java运维时候需要用到的相关命令(inculde linux),还给出了作者相对应的排查过程:下面是我总结的比较有用的一些命令:

Linux 操作:

Linux log 日志查看:

扫描二维码关注公众号,回复: 4671361 查看本文章

1.根据两个时间点查看日志:sed -n '/2017-06-04 14:06:27/,/2017-06-04 14:06:34/p'  test.log (可以查看时间点之间的日志)

2.输出最后一次匹配grep条件的数据行的前后各10行:(借助tail命令取最后几行)

grep  -n  -C10  'R0619'  caps-biz.txt | tail -n 21 | less(借助less命令的/pattern可以高亮搜索词)

grep  -n  -C10  '条件'  文件名 | tail -n 21 | less(借助less命令的/pattern可以高亮搜索词)

2018-11-26 10:37 -2018-11-26 11:04

3.Grep 命令 用法大全

 参数: 

-I :忽略大小写 
-c :打印匹配的行数 
-l :从多个文件中查找包含匹配项 
-v :查找不包含匹配项的行 
-n:打印包含匹配项的行和行标 

4.查看Java进程,排除eclipse上的进程

ps -ef | grep java | grep -v eclipse

5.jmap 对Java内存使用情况进行统计:

a.jmap -histo:live processId  

按照占用空间的大小打印程序中类的列表,从这个列表中可以分析哪些类占用了比较多的内存,再结合代码找到问题的所在

b.jmap processId 

按照占用空间的大小打印程序中加载的动态链接库的列表。

c.jmap -heap processId

查看堆的概要信息

都不能解决的时候,最终方案:导出Java堆的快照,然后通JMAAT等工具详细分析。

jmap -dump:format=b,file=./heap.hprof processId

6.如果想用在阿里生产机器上使用java命令,需要cd /opt/java 然后找到对应的bin 就可以使用java语句了。(./java -version)

7.jstat 是JDK自带的监控工具,在JDK的根目录里可以找到。使用示范:(可以看到JVM内部更个区域的使用占比和GC消耗的时间):S0,S1,E,O,M 

jstat -gcutil processId 5000 10

8.jstack processId:

jstack 命令用于打印给定的Java进程ID的线程堆栈快照信息,从而可以看到java进程内线程的执行状态,正在执行的任务等,可以据此分析线程等待,死锁等问题

9.uptime:查看机器的启动时间,登陆用户数,平均负载情况。可以用于线上应急或者技术公关中确定操作系统重启的时间。平均负载数量是CPU内核中运行的平均数。通常情况一个CPU的进程数量不超过3个的话就说明服务比较健康。

10.使用curl可以在Restful的测试中起到作用。

11.pidstat -urd -p processID

用于监控全部或指定的进程占用系统资源的情况,包括CPU,内存,磁盘I/O,线程切换,线程数等数据。

12.pmap -d 2862

此命令用来显示比较底层的进程模块占用内存的信息,并且可以打印内存的起止地址等,用于定位深层次JVM或者操作系统的内存问题

13.netstat -nap | grep processID

根据进程ID查找进程开启的端口。

14.netstat -nap |grep 端口

根据端口查找进程

猜你喜欢

转载自blog.csdn.net/puzimengya/article/details/84768720