WhatAKitty Daily

A Programmer's Daily Record

Eureka内核逻辑解析

WhatAKitty  

概览

Eureka高可用架构

本文分以下几点:

  1. Eureka的高可用实现
    a. eureka客户端与服务端通讯机制
    b. eureka服务端与其他服务节点的通讯
    c. eureka服务端的自我保护机制
  2. Eureka与ZK的比较
    a. CAP模型
    b. 使用场景

Eureka高可用实现

Eureka的高可用通过以下三点实现:
a. eureka客户端与服务端通讯机制
b. eureka服务端与其他服务节点的通讯
c. eureka服务端的自我保护机制

阅读全文 »

如何系统性的学习分析一个开源框架

WhatAKitty   阅读次数loading...

背景

这几年工作学习下来,对于开源框架分析学习没有一个完善的方法论可供参考,结合自身的学习经验,在这里略微发表下笔者的思路。

指导思想

  1. 首先需要了解这个开源框架的框架性功能(如果文档没有,则通过这个框架的具体功能来提取要素,找到框架性功能)
  2. 分析不同框架性功能在这个框架内的作用(核心功能、支撑功能)
  3. 对于核心功能具体分析,对于支撑功能有兴趣再了解
  4. 核心功能分析,按照上述2、3的逻辑再做具体功能的拆分,基本上拆出这两层已经差不多
  5. 画出核心功能的依赖处理流程图
  6. 查看每个功能的核心类,搞清楚不同功能的核心类的交互机制以及如何构建出这个框架的核心能力,输出核心流程图(时序图也可)
  7. 从核心类出发,查看其它支撑类的作用,并构建类图
  8. 从底往上出发,查看框架应用的设计模式以及为何需要使用这个设计模式,对于扩展性、易用性、可读性等的影响在哪里
  9. 总结性文档输出
sequenceDiagram
    alt /favicon.ico
        RestController->>RestController: 返回favicon.ico资源
    else
        rect rgb(0, 0, 255, .1)
            note over RestController: tryAllHandlers
            RestController->>RestController: 获取该请求path匹配的所有MethodHandler
      loop 循环所有的MethodHandler
        RestController->>RestController: 根据method获取对应的RestHandler
        rect rgb(0, 255, 0)
          note over RestController: 分发Request请求
          alt 不支持的请求
            RestController->>RestController: 返回badRequest
          else restHandler匹配存在
            alt 是否为限流请求
              RestController->>RestController: 设置限流
            else
              RestController->>RestController: 取消限流
            end
            RestController->>BaseRestController: 处理请求
            BaseRestController->>BaseRestController: 请求预处理
            note over BaseRestController: 每个具体的请求做具体的预处理动作

          else 
            RestController->>RestController: 
          end
        end
        RestController->>RestController: 标记分发结果flag为true/false
        alt flag为true
          RestController->>RestController: break循环
        end
      end
      alt flat为false
        RestController->>RestController: 返回400
      end
        end
    end

Linux启动过程分析详解

WhatAKitty  

背景

一直想要自己做出一个操作系统,因此对于现有linux需要有个详细的了解,知道操作系统如何实现所有的过程。因此,在这篇文章中记录下linux的详细启动过程。

本篇打算从三个部分讲解Linux启动的过程:

  1. BIOS阶段
  2. BootLoader阶段
  3. 内核启动阶段

本文前提:非UEFI模式

阅读全文 »

构建C远程开发环境

WhatAKitty  

背景

最近在学习Linux内核体系知识,需要C的一个编译环境。但是由于笔者使用环境为MacOS,并非使用的Linux体系操作系统,在进行内核编程的时候就无法调用linux系统函数;然后在折腾了一遍ubuntu虚拟机、实体机(显卡问题)后,意外发现了CLion的远程调试功能。

阅读全文 »