Kamafeel

求其上,得其中;求其中,得其下,求其下,必败


  • 首页

  • 归档

架构设计-理念抽象

发表于 2021-08-06 | 更新于 2021-11-18 | 分类于 架构 , 基础

所谓的概念 TOGAF

框架开放组体系结构框架(The Open Group Architecture Framework,缩写:TOGAF)

业务架构:突出了架构治理、架构流程、架构组织结构、架构信息需求以及架构产品等方面;
数据架构:定义了组织中架构连续体和架构资源库的结构;
应用架构:描述了用于支持此可持续架构实践的功能和服务;
技术架构:描述了架构实践中用于支持各架构应用和企业连续体的基础设施需求和部署方式。

前面1-3都是业务,最后是画饼后落地

如何高效沟通

能画图(UML),当面说,文字沟通。

沟通效率呈递减趋势

btw:
draw.io
StarUML

人精力有限,如何抓大放小

架构师的作用:把老板画的饼落地。

理解业务,抽象业务(DDD),注意边界,明确目标,聚焦核心需求(可控),技术选型,上下沟通,整合现有资源

核心能力-建模

建模是一种对现实事件的抽象,不同的心智会产生不同的模型,比如宗教,不同宗教就是对人生观世界观产生不同的模型

领域驱动(DDD)
用例驱动(UDD)
四色建模
CRC建模
CQRS建模

最近很喜欢的一句话

发表于 2021-08-06 | 更新于 2021-08-13 | 分类于 瞎扯蛋

除了死,剩下都只是擦伤

产品架构-调度产品

发表于 2021-08-05 | 更新于 2021-09-27 | 分类于 架构 , 产品

产品要素

1.server端高可用(分布式计算加分)
2.agent(work)端分布式
3.日志传输
4.任务事件触发/任务时间触发(时间轮算法)
5.任务关系算法DAG(图数据库)
6.服务注册(server和work)
7.任务信息存储选择
8.重做后续/任务共性参数传递

服务端设计

利用zk,nocos做服务端高可用,和server注册;
人为划分任务集群实现server分布式,分配到不同任务集群,跨任务群任务触发,走消息中间件或者kafka;

触发设计

时间轮数据结构,负责时间触发任务(或者用quartz)

事件触发?akka? epoll

server端设计

如何快速触发(事件,时间(cron,极短执行频率)),如何快速分析任务后续关系。

如何计算重做后续,批量补跑(等等业务诉求)

server高可用

ZK监听实现

agent(work)端设计

利用zk,nocos做服务注册和状态(运行任务负载,是否正常)同步;利用kafka或者mq做分布式。

编写start(shell通吃),kill,tail等脚本,分别启动,杀死,获取日志。

日志传输,按需执行,利用tail -f100,如果日志存在分布式获取,利用时序数据进行保存或者排序(es等)

任务信息事件关系

关系的保持,利用DAG算法,或者图数据库保存(快速检索关系)

利用mongodb保存任务基本运行信息。

任务参数

参数分全局参数,一般任务启动时,进行传递和设置(KV或者json模式)

任务间参数传递,利用redis进行中转(发送和获取需要开发不同语言的SDK,Java版本,python版本)(agent端通过server去获取)

函数式接口@FunctionalInterface

发表于 2021-08-05 | 分类于 JAVA , 开发

函数编程,实现匿名内部类的方式

Runnable 接口均已在JDK1.8后改造。

项目运用

有且仅有一个抽象方法”的接口上,表示函数式接口
(可以有静态方法,或者default方法)

在函数编程中,实现匿名写法

系统设计-配置文件安全

发表于 2021-08-03 | 分类于 架构 , 安全

配置文件信息安全

配置文件进行加密
jasypt-spring-boot-starter

https://www.cnblogs.com/chengxy-nds/p/15093253.html

配置中心
nacos 负责核心配置的私域化

数据库信息脱敏

偏移和取整
平均值
加密
无效化
随机值
https://mp.weixin.qq.com/s/_Dgekk1AJsIx0TTlnH6kUA

微服务事务

发表于 2021-08-03 | 分类于 微服务 , 理论

事务的处理

2PC,3PC 强一致性的缺陷(数据库)
TCC 的业务代码侵占
本地事务表,MQ事务(柔性最终一致性)
seata的运维

分布式事务
https://zhuanlan.zhihu.com/p/183753774

seata说明
https://juejin.cn/post/6844904001528397831

https://www.cnblogs.com/chengxy-nds/p/14046856.html

微服务弊端

发表于 2021-08-03 | 分类于 微服务 , 理论

事务的处理

2PC,3PC 强一致性的缺陷(数据库)
TCC 的业务代码侵占
本地事务表,MQ事务(柔性最终一致性)
seata的运维

公共功能

微服务集群中共性功能,如何抽离集中开发,又不影响各个微服务的测试和发布

运维

devops的工具,测试的工具,微服务内部全栈工程师的缺乏(数据库,中间件等)

K8S,istio等技术栈的学习

lua使用小结

发表于 2021-08-02 | 分类于 lua

lua使用场景

1.redis实现多操作的原子性
2.nginx、openresty的业务逻辑

lua特殊数据结构

1.table
及时数组又是对象

元表(Metatable)
2.可以用作模块和包,避免对原生表的修改

基本教程

https://www.runoob.com/lua/lua-tutorial.html

共识算法-Raft协议

发表于 2021-08-02 | 更新于 2022-03-08 | 分类于 微服务 , 理论

共识算法-Raft协议

核心:
1.选举
选举超时:
从跟随者到候选人的超时时间(每个节点随机150-300毫秒)

此时间达到(超时),即可为自己投票,并且发送给其余node,其余node如果没有投票,就会vote给发送的node,并且重置自己的选举超时时间

2.变更日志复制
一旦形成leader,所有系统的变更都需要走leader,leader复制分发日志变更记录到其余node如果majority node reply is ok,system change 生效并且回复客户端信息

3.共识
多node需要形成共识

演示说明:

http://thesecretlivesofdata.com/raft/

redis集群

发表于 2021-07-30 | 更新于 2021-08-02 | 分类于 中间件 , Redis

redis集群方式

1.主从,存在挂机弊端
2.哨兵,数量增加,内部逻辑复杂,数量扩展困难
3.Cluster 集群模式 hash slot hash槽,

1…789…21

Kamafeel

204 日志
57 分类
129 标签
© 2022 Kamafeel
由 Hexo 强力驱动 v3.9.0
|
主题 – NexT.Pisces v7.1.2