美文网首页
轻量级微服务架构下总结

轻量级微服务架构下总结

作者: 天空oo7 | 来源:发表于2018-08-26 09:50 被阅读315次

轻量级的微服务


2018-08-25-2

总结:整个微服务使用Spring boot + Docker 冰山上,ZooKeeper服务注册、Node.js服务网关、Jenkins等冰山下。

总体上可以分为:开发框架(上)、容器技术(上)、注册中心(下)、调用中心、部署中心、日志中心、监控中心、追踪中心、消息中心、配置中心。

注册中心:用于注册微服务相关配置信息的中心

调用中心:用于提供给前端调用的统一入口(我们选用Node.js实现)

部署中心:用于编译并打包微服务源码并将其部署到Docker引擎中(Jenkins)

日志中心:用于收集并管理微服务应用程序中产生的日志

监控中心:用于监控微服务的实时运行状况

追踪中心:用于最终微服务的调用轨迹

消息中心:用于解耦服务之间的调用关系

配置中心:用于管理微服务应用程序所需的配置参数

(我们认为,中心分为两类:一类是含有业务意义的中心,另一类是不含业务意义的中心-只是技术层面的中心)

2018-08-25-3

微服务日志


2018-08-25-4

总结:docker中查看日志路径 /var/lib/docker/containers/<container_id目录看到一个container_id-json.log文件,Docker默认使用docker logs查看的就是这些json文件,Docker默认使用Json-file格式,还有其他格式

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

2018-08-25-5

ELK 官网 https://www.elastic.co/

Kibana:用于数据可视化

Elasticsearch:用于数据搜索、分析与存储

Logstash:用于数据收集、将数据存入Elasticsearch中

Beats:用于数据传输,将数据从磁盘上传输到Logstash中

X-Pack:提供一些扩展功能,包括安全、预警、监控、报表、图形化等

Elastic Cloud:提供Elastic栈的云服务,提供公有云和私有云解决方案

微服务监控


2018-08-25-6

总结: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

微服务通信


2018-08-25-7

当服务间滴啊用较为频繁时,我们一般不会选择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

2018-08-25-8 image-20180826003520433 2018-08-25-9

微服务解耦


2018-08-25-10

总结:RabbitMQ性能高于ActiveMQ

image-20180826004521077 image-20180826004553331

微服务测试


2018-08-25-11

总结:通过配置@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

微服务配置


2018-08-25-12

总结:Ansible是一款开源的自动化运维工具,它基于Python开发,可用于配置系统与部署软件

通过SSH登录配置服务器

  1. 生成密钥 ssh-keygen -t rsa
  2. copy密钥到服务器 ssh-copy-id root@serverip
架构图

相关文章

  • 轻量级微服务架构下总结

    轻量级的微服务 总结:整个微服务使用Spring boot + Docker 冰山上,ZooKeeper服务注册、...

  • 微服务架构多“微”才合适?

    微服务架构多“微”才合适? 前情提要:互联网架构为什么要做服务化? 一、互联网架构为什么要进行服务化-总结 上一篇...

  • 软件架构模式

    CQRS架构 微服务架构 微核架构

  • 微服务架构设计和拆分

    微服务架构的设计原则 拆分足够微 轻量级通信 领域驱动原则 单一职责原则 DevOps(开发/运维)及两个披萨 不...

  • 架构设计读书笔记-微服务架构

    SOA与微服务架构的对比 对比维度SOA微服务服务粒度粗细服务通信重量级,ESB轻量级,如HTTP RESTful...

  • RocketMQ消息流转和有序性

    RocketMQ架构 NameServer Cluster 提供轻量级的发现和路由服务。每一个NameServer...

  • 微服务架构的优缺点和拆分

    单体式的架构更适合轻量级的简单应用,微服务架构适合大型、大团队、敏捷迭代型项目。后台架构的演变:单体结构(巨无霸)...

  • 分布式问题分析

    1. 微服务架构下的服务发现功能 微服务架构下的服务发现功能 2. 微服务架构下的服务治理 3. 分布式锁 4. ...

  • Spring Cloud Bus:消息总线

    Spring Cloud Bus:消息总线 Spring Cloud Bus 使用轻量级的消息代理来连接微服务架构...

  • Spring Cloud Bus:消息总线

    Spring Cloud Bus 使用轻量级的消息代理来连接微服务架构中的各个服务,可以将其用于广播状态更改(例如...

网友评论

      本文标题:轻量级微服务架构下总结

      本文链接:https://www.haomeiwen.com/subject/qeoniftx.html