轻量级的微服务
总结:整个微服务使用Spring boot + Docker 冰山上,ZooKeeper服务注册、Node.js服务网关、Jenkins等冰山下。
总体上可以分为:开发框架(上)、容器技术(上)、注册中心(下)、调用中心、部署中心、日志中心、监控中心、追踪中心、消息中心、配置中心。
注册中心:用于注册微服务相关配置信息的中心
调用中心:用于提供给前端调用的统一入口(我们选用Node.js实现)
部署中心:用于编译并打包微服务源码并将其部署到Docker引擎中(Jenkins)
日志中心:用于收集并管理微服务应用程序中产生的日志
监控中心:用于监控微服务的实时运行状况
追踪中心:用于最终微服务的调用轨迹
消息中心:用于解耦服务之间的调用关系
配置中心:用于管理微服务应用程序所需的配置参数
(我们认为,中心分为两类:一类是含有业务意义的中心,另一类是不含业务意义的中心-只是技术层面的中心)
微服务日志
总结:docker中查看日志路径 /var/lib/docker/containers/ none:容器不输出任何日志 json-file:容器默认输出的日志以json格式写入文件中(默认) syslog:容器输出日志写入宿主机的Syslog中 journald:容器输出日志写入宿主机的Journald中 gelf:容器输出的日志以GELF(Graylog Extended log fromat)格式写入Graylog中 fluentd: 容器输出的日志写入宿主机的Fluentd中 awalogs:容器输出日志写入Ammazon CloudWatch Logs中 splunk:容器输出日志写入splunk中 etwlogs:容器输出日志写入ETW (event tracing for windows)中 gcplogs:容器输出日志写入GCP(Google Cloud Platform)中 nats:容器输出日志写入NATS服务器中 docker中 --log-driver参数配置日志驱动 --log-opt max-size --log-opt max-file 分别设置日志文件大小和日志文件数量 例如:docker run -p 80:80 --log-dirver json-file --log-opt max-size=10m --log-opt max-file=3 --name xxx 容器名称 docker日志驱动(https://docs.docker.com/engine/admin/logging/overview/) 默认linux系统安装Syslog(名称Rsyslog),还有一个Syslog-ng(https://www.balabit.com/network-security/syslog-ng)更强大 通过 rsyslogd -v 检查rsyslog是否安装 Rsyslog官网http://www.rsyslog.com ELK 官网 https://www.elastic.co/ Kibana:用于数据可视化 Elasticsearch:用于数据搜索、分析与存储 Logstash:用于数据收集、将数据存入Elasticsearch中 Beats:用于数据传输,将数据从磁盘上传输到Logstash中 X-Pack:提供一些扩展功能,包括安全、预警、监控、报表、图形化等 Elastic Cloud:提供Elastic栈的云服务,提供公有云和私有云解决方案 总结:Spring boot自带监控actuator,有些需要在application.properties中配置才能够访问 actuator包括info(应用基本信息)、health(应用是否健康)、metrics(相关运行指标、开可以扩展其他新指标)、env(可以访问的环境变量)、loggers(查看和修改日志级别配置)、dump(线程相关信息)、trace(请求调用轨迹信息) Spring boot Admin开源 https://github.com/codecentric/spring-boot-admin cAdvisor开源 https://github.com/google/cadvisor InfluxDB开源https://github.com/influxdata/influxdb Grafana官网https://grafana.com https://github.com/grafana/grafana 集成InfluxDB+cAdvisor+Grafana 必须先启动InfluxDB 随后才能其他cAvisor和Grafana ZipKin开源 http://zipkin.io https://github.com/openzipkin/zipkin(google Dapper https://research.google.com/pubs/pub36356.html) Kafka 官网 http://kafka.apache.org Scribe官网 https://github.com/facebookarchive/scribe Zipkin java客户端 https://github.com/openzipkin/brave 当服务间滴啊用较为频繁时,我们一般不会选择HTTP调用,而是选择基于TCP的RPC调用 RPC是通过Socket通信的 常用RPC框架 Google gRPC、Facebook Thrift、Twitter Finagle、Alibaba Dubbo、新浪微博Motan等 gRPC官网:http://www.grpc.io Protocol Buffers 官网:https://developers.google.com/protocol-buffers/ 搭建分布式RPC框架使用Netty + Zookeeper + protostuff Protostuff官网:http://www.protostuff.io Netty 官网:http://netty.io 总结:RabbitMQ性能高于ActiveMQ 总结:通过配置@FixMethodOrder(MethodSorters.NAME_ASCENDING)使所有待测试方法安装字母升序的方式被JUnit框架调用 AssertJ : https://joel-costigliola.github.io/assertj/index.html Jayway JsonPath: https://github.com/json-path/JsonPath Jayway JsonPath Evaluator http://jsonpath.herokuapp.com JSONassert http://jsonassert.skyscreamer.org Newman npm: https://www.npmjs.com/package/newman Swagger 官网:http://swagger.io apiDoc http://apidocjs.com 总结:Ansible是一款开源的自动化运维工具,它基于Python开发,可用于配置系统与部署软件 通过SSH登录配置服务器微服务监控
微服务通信
微服务解耦
微服务测试
微服务配置