• 微服务那些事--笔记


    这本书是2017年的,有些旧,毕竟springcloud更新速度还是挺快的,不过基础的东西变化不太大。

    读后感:这本书语言风趣,用来入门还是可以的。这本书的侧重点不在于技术,而是在于工作经验,难得的好书。

    这本书一共11章,216页,算是很精简了,介绍肯定不全面,也不会太深入,但是对于想快速了解springcloud的人,比如我,就很适合。

    第一部分 微服务解惑篇

    第一章、微服务架构

    第二章、为何选择微服务

    第三章、拆分

    第四章、如何使用微服务

    第五章、微服务的朋友圈

    第二部分 技术实现篇

    第六章 Spring Boot

    第七章 Spring Cloud

    第八章 其他相关技术和工具

    第九章 测试相关

    第三部分 项目实战篇

    第十章 三个典型系统案例

    第11章 开发管理‘

    第一章:微服务架构

    微服务的特点:组件化(面向单一的服务、业务功能集中、小组件五脏俱全,对内高内聚,对外低耦合)、独立自治(团度独立、技术选型灵活、数据库分离、独立部署、容错)、灵活易扩展、流程化(拆分成流水线)

    缺点:

    1、各个开发团队之间,沟通困难

    2、时效性不好

    3、一致性不好

    4、开发重复的功能

    5、架构和维护更复杂,需要投入更多精力

    难点:

    1、落地:包括PAAS、Docker等环境准备,这个直接用阿里云即可,可忽略

    2、规划:梳理业务,进行微服务划分,这部分比较重要,但是也不算艰难,有个熟悉业务的人就好

    3、开发、测试、运维,包括如下:

    接口规范、契约一致性、服务编排、容错、运营管理

    第二章、如何选择微服务

    第三章、如何拆分

    先了解拆分等原则、粒度和边界问题,然后分析业务,自然而然就知道哪里该拆,拆成什么样。

    根据1:数据模型和业务模型

    根据2:金字塔结构图

    关键指标:

    1、拆分公共服务

    2、拆分重点业务

    3、对系统影响大大业务功能

    粒度不是越细越好,一个微服务是同一种业务能力,是一系列功能的组合,而不是小到一个功能。

    已解决实际问题为出发点避免为拆而拆,拆的时候要考虑拆的意义,以及拆完之后维护的难度。

    边界一定要清晰,分工一定要明确:一个微服务只负责自己的一块业务

    如果不清楚,那么步子小一点,拆分的少一点,慢慢拆。

    第四章、如何使用微服务

    如何规划:全局性,针对性,良性发展(技术架构促进业务的发展),格局大

    第五章、微服务的朋友圈

     1、容器解决了微服务的部署问题

    2、DevOps,我一直在考虑一个开发到底需不需要学习运维领域的k8s,原来这种人还是需要的

    3、全栈式开发

    第六章、Spring boot

    第七章、Spring cloud(这一章是重点)

    注册中心Eureka:

    网关Zuul:提供一个统一的服务出口,同时负责鉴权、认证、安全、跳转等作用

    正向代理代理的是客户端,反向代理代理的是服务端;

    正向代理,服务端不知道客户端是谁

    反向代理,客户端不知道服务端是谁

    如何区分?就看这个代理是客户的(比如VPN)还是服务商的(比如nginx)。

    客户端负载均衡 Ribbon:主要功能是提供客户端的软件负载均衡算法,将各服务连接起来,有连接超时、重试等功能

    断路器Hystrix:失败则调用fallback接口

    分布式配置中心 Spring Cloud Config:

    本地存储配置的方式通过设置属性spring.profiles.active=native 来实现。

    资源文件的命名按照如下规范进行

    I {application} / {profile}[/ {label}]

    I {application}-{profile} .yml

    I {label} / {application }-{profile} .yml

    I {application }-{profile} .properties

    I {label}/ {application }-{profile} .properties

    label 是可选的,如trunk 、branch 等。

    服务之间调用 Feign:

    Feign 内部集成了Ribbon ,所以它自带负载均衡功能

    FeignClient 里面己经包含了Hystrix , 所以不需要增加Hystrix 的依赖,也不需要开启@EnableCircuitBreaker。

    服务追踪 Sleuth:一个请求是一个traceID,每经过一个服务是一个spanID

    日志聚合Zipkin:需要配合Sleuth使用

    第八章、其他相关技术和工具

    Liquibase 一个用于跟踪、管理和应用数据库变化的开源的数据库重构工。它将所有数据库的变化(包括结构和数据)都保存在XML 、JSON 等格式的文件中,便于版本控制。

    Swagger 的好处在于接口可视化,在线文档和API 始终同步,以及可以对接口进行测试

    权限 Spring Security:

    微服务架构的通信方式:Kafka,rabbitMQ

    服务编排:这个还是用k8s吧。

    第九章、单元测试

    Junit

    Mock:框架mockito

    Mock 与lnjectMocks 的区别:

    代码质量管理工具:Sonar

    第三部分、项目实战篇

    第十章、三个典型系统案例

    1、梳理业务,画金字塔图和业务泳道图

    2、拆取公共服务(包括基础服务、规则服务、验证服务、计算服务等)

    3、拆分业务主体,如果业务影响大,可以采用分批逃跑法

    4、其他:收取前端和数据库的判断逻辑,更新插件(比如消息中间件),更改接口调用方式等

    第11章、开发管理

    管理原则:

    1、小团队易于管理,沟通成本低,交付质量容易控制

    2、尽量不要使用虚拟团队、远程协作

    3、部署服务时应该分批上,不要一次性上太多,容易定位问题

    每日站会:

    1、昨天工作进展

    2、遇到的问题

    3、今天准备做什么

    代码质量:

    1、不断优化,持续改进,减少重复代码和难以理解的代码

    2、尽可能正规的单元测试

    3、不确定的需求要确认,不确定的方案要请他人审核

    工作方式:

    1、别急着动手,先明确要做什么,为什么做,怎么做

    2、别急着动手,业务需求细节要理解准确,否则请确认该需求的细节,不重要又难以实现的细节是否可以砍掉或换个方式

    3、别急着动手,方案设计要适当,不确定时要请他人(业务大牛和技术大牛)审核

    4、别急着提交,单元测试和自测要全面

    开发人员的工作原则:

    1、先找轮子,找不到就开发可复用的轮子

    2、边开发边清理边优化边写单元测试

    3、尽可能增加代码而不是修改现有代码

    4、业务功能一般照着做,有个参照物,不容易出错

    5、不仅要知道如何做,还要知道为什么做

    6、经常对开发内容进行讨论,避免理解不一致的情况

    BA(Business Analyst)的职责:

    需求要明确,让每个人知道要做什么和为什么做。

    SA(System Analyst)的职责:

    选择技术、框架、标准化工具,管理代码质量,提供工具类。

  • 相关阅读:
    [转]网站架构收集 朱燚:
    SQLServer 2005 海量数据解决方案 分区表 朱燚:
    【轻松一下】女朋友的保健作用 朱燚:
    A tip when running javascript dynamically 朱燚:
    【组图】地震前线归来心中的震撼 朱燚:
    系统自动启动程序之十大藏身之所 朱燚:
    [轻松一下]90%的男人想作的事情 朱燚:
    JavaScript的9个陷阱及评点 朱燚:
    【转】c++中的sizeof 朱燚:
    PG数据库中相关操作
  • 原文地址:https://www.cnblogs.com/lakeslove/p/11000051.html
Copyright © 2020-2023  润新知