Friday, May 28, 2021

V2EX - 技术

V2EX - 技术


lowcode 是不是在断后人的路?

Posted: 28 May 2021 03:56 AM PDT

看到一些 lowcode 平台其实并不好用,但毕竟摆在那里,从组件机制到部署一条线全干了,甚至禁止别的部署和接入方式。技术 leader 和产品都倾向于采用现成的方案。

其实实际开发还是写组件,没什么本质区别,另外还可能受限于封闭性做一堆有难度没价值的 hack 。工程化和性能优化两条路都堵死了。前人造轮子彻底封死后人造轮子的路(组件化、打包构建、CICD 直接与你无关),工作没成就感。个人发展和职业晋升受限,有能力的人挣扎挣扎走了,剩下能力平庸的用一套固定的东西实现傻逼的需求。

有些做 lowcode 平台的人自己也知道,做一堆封闭、全但差的东西就是要堵死别人。

各位公司的 K8S 集群是通过什么方式搭建的?

Posted: 28 May 2021 03:50 AM PDT

我们的环境是私有云,搭建是用半自动的方式的,就是把启动需要的二进制文件和配置文件都分发到各个节点,虽然说这样可以改的地方比较多,比较灵活,但是非常容易改错某个配置导致集群启动不了。想问问你们公司都是咋搭建 k8s 的? kubearm ? rancher ? GitHub 上面的全自动化脚本?还是?

Repository 层的代码如何封装才比较合适?

Posted: 28 May 2021 03:32 AM PDT

有两个 case,分别是不同人封装的,下面是伪代码:

case1:

// 根据用户昵称获取用户信息 function findUserByName(name){     // 获取数据库链接     db = _get_db()     if (not db){     	return error     }  	// orm 查询     user, err = db.where('name', name).get(table_name)     if (err) {         LOG("查找姓名失败", err)         return error     }      return user }  // 根据用户 ID 获取用户信息 function findUserById(userid){     // 获取数据库链接     db = _get_db()     if (not db){     	return error     }  	// orm 查询     user, err = db.where('id', userid).get(table_name)     if (err) {         LOG("查找用户 id 失败", err)         return error     }      return user }  // service 层调用 user1 = userRepo.findUserByName('拜拜你条尾') user2 = userRepo.findUserById(12) code ...  

case2:

// 简单封装了查询函数? function query(where_array, limit){     // 获取数据库链接     db = _get_db()     if (not db){     	return error     } 	     // orm 查询     user, err = db.where(where_array).limit(limit).get(table_name)     if (err) {         LOG("查找用户失败", err)         return error     }      return user }  // service 层调用 user1 = userRepo.query({name = '拜拜你条尾'}, 1) user2 = userRepo.query({id = 12}, 1) code ... 

case2 这种封装有点迷的感觉,不能 cover 大部分的情况(where in/ or 之类),那这样的封装的意义何在?倒不如像第一种一样,不同的查询条件就封装一个方法,见名知意,不会给人带来疑惑?

不知道各位怎么看...

另外像请教下大家在这一层是怎么封装代码的?

快手移动端效能后端招人

Posted: 28 May 2021 03:21 AM PDT

在多个方向都缺人,主要是

  1. 监控方向(实时数据处理,Hive 查询优化,了解 Flink 、Spark 优先)
  2. 自动化方向( android 和 ios 自动化方向都缺人)
  3. CI/CD 方向(负责快手客户端 CI/CD 工具链核心模块设计,技术选型,方向发展规划和 CICD 平台的开发)
  4. 动态化方向(负责客户端动态化发布平台的建设和开发)

主要负责的内容是内部一些平台的开发建设,语言的话是 Python,目前正在转型成 Go (如果你是 go 语言大佬的话,进来估计就是天花板,组里其他人都刚开始学 Go 半年左右,菜的丫批),Java 等其他语言也可以,没有这两个语言基础的话进来会留时间现学。薪资大概一线大厂靠上的水平,具体多少我也不清楚,反正外面传着快手的薪资挺高的。

要求的话本科毕业,做事踏实就行,工作难度不大,强度嘛 emmm 北京总部的话早 10 晚 8,其他地方因为老板不在分部所以差不多 7 点到点下班,周末的话大小周,大周是周日加班而且双倍工资。在北京上海杭州深圳都有 HC,欢迎大家投递。

邮箱: magatamaa@protonmail.com

新装的 k8s 网络 pod 无法 ping 通 svc

Posted: 28 May 2021 03:10 AM PDT

奇怪的问题,如果部署一个 nginx 的 svc,然后用 kubectl run curl --image=radial/busyboxplus:curl -i --tty --rm,启动一个临时 pod,在里面 ping nginx-svc 不通,但是 ping nginx-svc.default 是通的。如果换个 pod,kubectl run curl --image=busybox -i --tty --rm,在里面 ping nginx-svc 就通了。

如果换到阿里的 k8s 的 ack,起这个 busyboxplus:curl,在里面 nginx-svc 是通的,这是什么古怪问题,有人遇到过吗?

有没有 Windows 主机实时同步内网 Linux 服务器指定目录数据的工具?

Posted: 28 May 2021 02:58 AM PDT

局域网速度,Linux 指定目录发生变化时,自动同步服务器文件到主机上可以做到吗。

目的是本地需要这个文件更新,而不是修改服务器文件。

terraform 的 output 问题

Posted: 28 May 2021 02:34 AM PDT

内容:

子 mudule main.tf

    module "ec2s"  {      source = "xxxxx/aws"       count = 3      xxxxx      instance_type = var.instance_type       xxxxxx     } 

main.tf:

module "create_ec2s" {  	source = "./path/ec2s"      	for_each = var.instance_types          instance_type = each.value.types 	xxxxx  } 

这种嵌套引用,又有 for_each 又有 count 的 instance ip 怎么 output 出来:

output "ips" { 	value = {for p in keys(var.instance_types) : p => module.ec2s[p].xxxx_ip} } 

总是报错, 我也不知道这个 ec2s[p] 是一个什么结构,如何知道这个结构呢 ,

可以在阿里云的 ECS 上部署 OpenStack 集群吗?

Posted: 28 May 2021 02:27 AM PDT

写论文要做实验用,学校这边找半天给找了三台支持万兆网的服务器,不太够,再找也挺麻烦的;
今天突然想到是不是可以在公有云上部署 OpenStack 集群,就看了看阿里云、腾讯云,AWS 没去研究。
查了一下好像阿里云的那个弹性裸金属服务器表明了可以二次虚拟化,但是价格实在太贵了,腾讯云那个什么黑石直接在测试中不给用。
所以想问问大家,在阿里云的 ECS 上可以部署 OpenStack 吗?二次虚拟化会不会有问题?以及表明了内网速率为 10G 的机器,如果加弹性网卡并使用 bonding,可否突破 10G 的限制?
谢谢各位!

企业微信通讯录同步创建用户姓名不显示中文求助

Posted: 28 May 2021 02:09 AM PDT

python 3.9 用的 requests.post

empinfo = {
"userid": "%s" %loginid,
"name": "%s" %name,
"mobile": "%s" %mobile,
"department": "%s" %deptid,
}
send_empinfo = (bytes(json.dumps(empinfo), 'utf-8'))


json.dumps 解析为
b'{"userid": "55555", "name": "\\u6d4b\\u8bd5", "mobile": "13912345678", "department": "888888"}'

企业微信的姓名显示为 \u6d4b\u8bd5


大佬救命...

Windows PC 版微信自动升级问题

Posted: 28 May 2021 01:57 AM PDT

最近[2021.5.28]PC 版本微信最新版本为 3.2.1.154,发现打开公众号文章时页面空白,网上普遍反馈有此问题

回退到3.2.1.134后可以正常打开公众号文章,但是用两天莫名奇妙的就变成3.2.1.154版本了

有相同境遇的小伙伴吗,蹲一个解决方案,THX

欢迎参与 Flask 文档中文翻译

Posted: 28 May 2021 01:39 AM PDT

这份中文文档在翻译完成后会链接到官方文档,并和英文文档保持同步更新:

欢迎在这里投票选出 /添加你喜欢的中文 logo 字体和中文标语翻译: https://github.com/greyli/flask-docs-zh/discussions/categories/vote

介绍文章: https://greyli.com/flask-docs-zh/

为什么每次 DNS 查询的结果都不一样

Posted: 28 May 2021 01:31 AM PDT

小白提问,当使用 dig 命令查询已被 GFW 墙了的域名时,每次解析出来的 IP 都不一样。我将 DNS server 设置为 8.8.8.8 后,依然是如此。如果查询没有被墙的域名,那么每次的结果都是一样的。

我知道肯定是 GFW 做了某些手脚,但是不知道具体原理,有没有明白的 v 友说一说细节,想知道。

截屏 2021-05-28 15.00.05.png

关于 Python 装饰器校验参数的智能提示

Posted: 28 May 2021 01:12 AM PDT

如下例子:

foo() 方法没有使用装饰器进行参数校验,这个时候 IDE 的参数智能提示会告诉我参数是 param1, param2

bar() 方法使用了装饰器就行参数校验,这个时候 IDE 的参数智能提示变成了被装饰后的方法 validate,IDE 告诉我参数是 *args, **kwargs

请问有什么办法可以让使用了装饰器之后 IDE 还是按照原方法的参数进行提示呢?

from functools import wraps   def validate_params(func):     """     入参格式校验     """      @wraps(func)     def validate(*args, **kwargs):         invalid_params = [key for key, value in kwargs.items() if value is None]         if invalid_params:             print('%s 参数非法' % str.join(',', invalid_params))         return func(*args, **kwargs)      return validate   def foo(param1, param2):     # 有什么办法可以让使用了装饰器之后 IDE 的参数提示是「 param1, param2 」     pass   @validate_params def bar(param1, param2):     pass   if __name__ == '__main__':     foo(param1='IDE 智能提示:「 param1, param2 」', param2='没有使用装饰器进行参数校验')     bar(param1='IDE 智能提示:「*args, **kwargs 」', param2=None)  

有老铁知道啥公司能提供 Vmware 上 Linux 系统里 MySQL 的数据恢复服务吗?

Posted: 28 May 2021 12:52 AM PDT

RT,公司生产环境数据库有部分数据丢了,需要找回,有偿购买数据恢复服务.各位老铁有推荐的公司吗?

求助: celery pytest 的单元怎么写

Posted: 28 May 2021 12:52 AM PDT

找到了这个资料 也尝试了改 conftest.py 文件的

# conftest.py @pytest.fixture(scope='session') def celery_config():     return {         'broker_url': 'redis://127.0.0.1:6379/0',         'result_backend': 'redis://127.0.0.1:6379/0',     }  
# test_file_a.py @pytest.mark.celery_app @pytest.mark.celery_worker @pytest.mark.asyncio async def test_invoice_ws(self, async_client): 	async with async_client.websocket_connect(f"/server_a/api/v1/assets/long_query") as ws:         await ws.send_json(query)         .... 

并不起效果

# pip list | grep celery celery == 5.0.0 pytest-celery == 0.0.0  # python --version Python 3.9.4 

求大佬们给个能跑的 demo 抄一下 Orz

买了两块东芝的 12T n300 ,在 ubuntu20.04 上看不到 且无法挂载 在 ubuntu20.04 上 lsblk 看不到

Posted: 27 May 2021 11:40 PM PDT

dmesg 信息是
[60349.673296] sd 14:0:0:0: [sdd] Spinning up disk...
[60350.548326] sd 10:0:0:0: [sdc] Spinning up disk...
[60359.619120] sd 14:0:0:0: [sdd] 0 512-byte logical blocks: (0 B/0 B)
[60359.619121] sd 14:0:0:0: [sdd] 0-byte physical blocks
[60359.619487] sd 14:0:0:0: [sdd] Test WP failed, assume Write Enabled
[60359.619891] sd 14:0:0:0: [sdd] Asking for cache data failed
[60359.619893] sd 14:0:0:0: [sdd] Assuming drive cache: write through
[60359.632107] sd 14:0:0:0: [sdd] Attached SCSI disk
[60360.067306] sd 10:0:0:0: [sdc] 0 512-byte logical blocks: (0 B/0 B)
[60360.067307] sd 10:0:0:0: [sdc] 0-byte physical blocks
[60360.067675] sd 10:0:0:0: [sdc] Test WP failed, assume Write Enabled
[60360.068085] sd 10:0:0:0: [sdc] Asking for cache data failed
[60360.068087] sd 10:0:0:0: [sdc] Assuming drive cache: write through
[60360.092342] sd 10:0:0:0: [sdc] Attached SCSI disk

go 快速开发脚手架

Posted: 27 May 2021 11:37 PM PDT

找个能在生成二维码下方显示文字的三方库

Posted: 27 May 2021 11:30 PM PDT

现在生成二维码的三方库,没能找到能同时在下方显示文字的。

深夜求助 Java 中 2 个线程怎么互相唤醒和挂起

Posted: 27 May 2021 11:29 PM PDT

假设现在有一个子线程和一个主线程

现在主线程创建了子线程并调用了start方法 主线程挂起 子线程可能执行了几行代码就挂起了并唤醒了主线程 然后主线程执行了几行代码并挂起和唤醒子线程 ....如此循环

子线程每执行一些任务就挂起并退回到主线程

这个东西是目的是实现前端调试后端代码。。。后端的代码,可能是某个方法内存在几个断点,到了断电就要暂停,并把当前状态返回到前端,然后由前端决定是否往下走。到了代码里就是主线程控制子线程的代码是否往下走,断点的地方就需要 wait,并唤醒主线程把数据发前端

目前尝试 wait 和 notify  但是子线程 notify 主线程后,自己还怎么 wait 暂停? 两个线程我用了同一个锁,子线程 notify 后锁就不在子线程了 这个时候 wait 就会异常

记一次手机卡顿又恢复流畅的经历

Posted: 27 May 2021 10:52 PM PDT

手机 Meizu 16s Flyme7.2.3A 首发购入,前排表明和手机及版本无关
已去掉内置的应用商店等等一堆 APP,一直很流畅

发现卡顿是一个多月前,当 firefox 淘宝京东任意打开到第三个时会卡顿,操作缓慢,有时黑屏,心想这些 APP 真的毒瘤
每次用一键加速内存清理 1G 多后恢复流畅

曾经怀疑遇到西数闪存掉速,也下载了测速工具,排除,毕竟首发机器
也想过刷机更新系统,但是忍住了,毕竟 flyme 被挖墙角元气大伤

昨天卡顿的摸鱼都没兴趣了,遂准备打开开发者模式一探究竟,还未插入 USB 就发现了手机里有支招运行的服务一项,
点进去一看,设备内存可用只有 200mb,系统占用 3G,点击查看缓存,清理掉淘宝京东微信后可用内存还是少的可怜
继续研究,翻到底部发现谷歌拼音输入法占用 1.8G 内存

好家伙,原来是你啊,一键加速怎么可能清理掉系统唯一输入法呢

导出用户词典 4213 条,先清理 APP 数据试试,应用大小大 2G,用户数据 10mb,清理后还是 2G 没变化,不正常准备卸载
这时输入法跳出设置界面,设置 OK 后返回,应用大小已经变成 47MB,这才是正常水平

重新导入用户词典,一切正常,现在摸鱼很舒服,手机还能再战 2 年 doge

恩,变卡不一定要刷机,花点时间研究一下能省很多时间呢

Mac 系统如何安全的给陌生人 remote access?

Posted: 27 May 2021 09:35 PM PDT

有个软件,我尝试在 M1 上编译出现问题。GitHub 联系作者,作者表示暂时不打算购入 M1,但是如果我能给他 remote access,他可以有空帮我看看。

接触这个软件的人圈子已经很小了,原则上我是相信作者的,但还是有隐私方面的顾虑。如果给他开一个非管理员账户,让他远程桌面或 ssh 连进来,能保证安全吗?

「前端进阶必备」JavaScript 中的内存机制(上)——内存模型和内存生命周期

Posted: 27 May 2021 08:42 PM PDT

如何查看一个软件包(未安装)的依赖包?

Posted: 27 May 2021 08:41 PM PDT

主要是针对未安装的软件包,因为不知道会依赖哪些子包。
我看了 pip 没有这方面的选项,即使登录 pypi.org 查看软件包,也看不到其依赖的子包。
如何查看依赖?

Ubuntu 18.04.5 LTS 下的硬盘中了 U 盘携带的 windows 病毒怎么办?

Posted: 27 May 2021 07:30 PM PDT

单 Ubuntu 18.04.5 LTS 系统下挂载的一个 4T 的硬盘中了 U 盘携带的 windows 病毒 autorun.inf ,直接删除会重新生成,安装 Clamav,使用 clamscan --remove 命令清除也会重新生成,网上也没找到方法,请问各位大神知道要怎么才能清除掉这个病毒吗?

分享: Project Reunion WinUI 3, UWP 的界面桌面程序(.Net 5)的权限与功能

Posted: 27 May 2021 07:15 PM PDT

文档: docs.microsoft 点 com/zh-cn/windows/apps/project-reunion/get-started-with-project-reunion#set-up-your-development-environment

现在这个版本相当于一个正式版本,直接 Visual Studio 普通版本安装就行了。UWP 的界面还是吸引人的,顺滑、支持触摸、手柄、遥控器等设备,但是 UWP 权限的限制导致很多软件无法做成 UWP 程序,这下两全其美了。真香。

Newsletter 分享深度文章后续, EP002-Git as a NoSql database

Posted: 27 May 2021 05:58 PM PDT

1. Git as a NoSql database [英]

很有趣和有意思的一篇文章,讲述如何利用文件系统和 git 构建一个 NoSQL 的 database 。顺便推荐一篇 git 原理的文章可以结合来看 git 内部原理

2. Software Engineering Body of Knowledge [英]

IEEE 出品的软件开发者知识体系,涉及软件设计,软件架构,软件测试等多纬度。比较长且英文,可能需要慢慢品味。

3. 中国程序员容易发音错误的单词

Git 读 /ɡɪt/还是 /dʒɪt/呢 YouTube 读 /'juː'tjuːb/还是 /'juː'tʊbɪ/呢

4. 开发人员有用的定律、理论、原则和模式

一些有意思的理论和原则,为开发和设计过程中提供理论支撑。常见的隐式接口定律KISS 原则、**里氏替换原则 **

5. 电视剧《觉醒年代

豆瓣评分:9.3 制作和演技可以堪比大片,讲述了五四运动前后的一段历史,鲁迅 迅哥在里面真的是活灵活现,已经当时那个时代的学生和大家们的气节。看完之后当时有个思考:是时代成就了这批人还是这批人造就了那个时代

618 要买什么呢

网站及更多期:不定期更新のNewsletter (update-time-to-time.github.io)

前情提要:Newsletter 分享的可行性 - 附带第一期试点


FAQ:

  1. 为什么做这个 Newsletter

    主要是因为自己平时会遇到或读到一些自认为还不错的知识,同时当前信息冗余过多,希望能过将这些高质量有深度的信息分享给大家。同时也是督促自己消化这些知识。

  2. 以什么形式运行

    目前是自己看完的,在看的的自认为不错的信息以每期至少五篇形式分享出来,但是希望的目标能够有更多的人参与进来分享,采用投票机制来进行分享。同时希望新增一个『每天更新』的频道,分析一些中等信息密集的高质量原创文章 /工具 /资源

  3. 会建立微信群么

    不会,毕竟这是内容本身就是避免冗余信息,而微信并不是适合这种,如果顺利可能会尝试邮件组+评论形式吧

  4. 一个希望

    希望大家能够多多支持,也是自己有动力跟新的前提。以下任何关注方式都是大家的鼓励

  5. 留言回复意见或者优秀文章

  6. 深度阅读上面文章的分享

  7. 通过 不定期更新のNewsletter 网站 进行邮件 订阅

  8. 关注临时 Twitter

听说 “小米最近的 MTK 机型能够绕过官方直接解锁 bootloader 了”?

Posted: 27 May 2021 04:31 PM PDT

一位 ID 是 hXezh 的大兄弟说的:v2ex.com/t/778479#reply56

我搜了半天没找到有用的信息,这位大哥的 ID 有敏感词我 @不了,另开一贴大家伙探讨一下吧

我不是对米系有什么执念有什么感情,只是对刷米系手机太熟悉了,曾经刷死了都能自己拆机用 9008 救活,而且性价比也确实可以,所以只要能绕过耍猴的官解 BL 渠道它就是可以选择的好手机

关于 HTTP 代理的疑惑

Posted: 27 May 2021 04:28 PM PDT

在 HTTP 隧道代理中,客户端可以单独指定目标服务器的 ip 么?还是只能把 host 交给代理服务器让代理服务器来解析对应 ip?

代理服务器版本 squid/3.5.19

基于 PVE, TrueNAS 和 OpenWRT 的自用 ALL in ONE NAS 记录

Posted: 27 May 2021 04:21 PM PDT

之前使用 DELL R510 搭建的 NAS 快满了,毕业后也很难带着 2U 服务器到处跑。因此萌生了组建一台新的 NAS 的想法。

需求

梳理了一下我对这台理想中的 NAS 的需求,列举如下。

  1. 存储(目前有 4TB 数据,期望容量 20TB,预留 40TB 的可能性)内容以动画为主,也包含重要个人文件的备份。
  2. 下载( Torrent )
  3. 软路由( zerotier 虚拟内网(用于与 R510 组成异地灾备))
  4. 虚拟化(支撑有时候的开发需求,有可能结合 frp 搭建个人网站)
  5. 体积限制,一般 M-ATX 机箱大小
  6. 噪音限制,和家用台式电脑同级

计划使用的技术

技术上,由于需求和 R510 差不多,技术选型也相当相似。

  • Pve 作为 host 系统
    • openwrt
      • ZeroTier
    • TrueNasCore
      • ZFS
    • 其他虚拟机

硬件需求

以上内容对硬件产生了如下约束。

  1. 内存
    1. 16GB 起步,最好 32GB
    2. ECC
  2. 处理器
    1. 4 核以上
    2. VT-x & VT-d
  3. 主板
    1. 具有两个以上 PCI-e 插槽
    2. M-ATX 版型
    3. ipmi
    4. 多网口
  4. HBA 卡
    1. 支撑 8SATA
    2. 直通给 TrueNAS
  5. 多口千兆网卡
    1. 直通 OpenWRT
  6. 硬盘

当然,我还只是个穷学生,预算方面有 1w 左右的限制。

最终选型

硬件 型号 品牌 数量 单价 总价
机箱 N8C 小克思工控 1 ¥780 ¥835
主板 X10SLL-F SuperMicro 1 ¥650 ¥650
CPU E3-1231 V3 Intel 1 ¥340 ¥340
RAM 8G DDR3 1600 ECC Micron 4 ¥170 ¥685
HBA SAS9300-8i LSI 1 ¥1050 ¥1050
网卡 WYI350T4 Winyao 1 ¥289 ¥289
SSD 870 EVO ( MZ-77E1T0B ) Samsung 1 ¥899 ¥899
SSD WDS100T2B0A WD 1 ¥929 ¥929
PSU SSP-250SUB SeaSonic 1 ¥355 ¥355
Cooler HP400mini 乔思伯 1 ¥99 ¥99
FAN SC8010KH12H-P Scythe 4 - ¥132
线材 SFF-8643 => 4*SATA - 2 ¥40 ¥88
线材 SATA - 2 - ¥40
配件 2.5 寸硬盘架 - 1 ¥28 ¥36
总计 - - - - ¥6427

其中,两块 SSD 组成 RAIDZ1 用于 PVE 系统盘。

相信读到这里肯定有人注意到了,没有硬盘。原因相当简单,计划使用的 WD40EZRZ 最近价格风云变换,一度涨至¥700 元。故暂缓。先找了 8 块垃圾硬盘来搭建原型。

搭建过程中的注意事项

  1. PVE 只能有一个控制网口,虽然可以改,还是建议将 2 号网口(对应软路由的 LAN )作为控制口
  2. pvetools 这个脚本的开启 pice 直通功能对应 EFI 启动的 pve 不起作用,需要按照 pve 官方教程将 intel_iommmu=on写入 kernel-command

总结

目前来看,这一套虽然略微超出预算,但是基本上能够满足我的需求。我还是相当满意的。 美中不足的有以下几点。

  1. 机箱
    1. 必须使用 FLEX 电源,选择受限
    2. 空间利用率有点低,比万由机箱或 NBOX 高一截(但是 pcie 不需要转接线)
  2. SAS9300-8i 对 BIOS 支持并非十分友好,最好搭配 EFI 使用
  3. 主板
    1. 内存容量出道即颠覆,没有升级空间了
    2. CPU 供电只有 85W,不能使用大多数 E3 V4
    3. 第一条 PCIE 槽在 2 号位,上面的 1 号位是空着的导致插双槽显卡会被迫放弃第二条 pcie 槽。

以上是我组建 All in ONE NAS 的大致记录,谢谢。

求大佬们给一个加密存储的思路

Posted: 27 May 2021 12:29 PM PDT

场景:

  • 数据都存在 mysql 中(大概十几个 G );
  • 需要对部分数据加密(导师自认为实验室的敏感数据)
  • 然后存在大量的爬虫采集数据;
  • 现有依赖这个数据库的有:一个 web 系统( php 开发),各种算法分析模块( python/java )开发;

需求:

  1. 实现 web 系统中每个用户都有自己的密钥来解密获得数据(就是用户自己输密钥,前端解密);
  2. 每个算法分析程序对加密数据也要用自己的密钥来解;
  3. 对所有需要加密的字段进行加密存储(目前都是明文的);
  4. 可以更换用户的密钥不影响加密数据;

目前遇到的问题:

  1. 不同语言的加密算法能否通用?
  2. 导师是想用一个统一的 api 来实现,让所有对数据库的请求过这个加解密服务(未来还要加上一些访问控制),但是目前的程序 php/java 都是用其自带的 orm 来实现 mysql 操作的(修改工作量很大);
  3. web 系统存在一些十分复杂的 sql 查询,怎么能方便的转化成 api 的形式;

目前的设想:

  1. 使用统一的对称加密密钥( key )加密数据(可能每个表一个密钥),这个密钥用加密服务的一个密钥加密( sys-key )存储;
  2. 程序请求数据的时候要先验证程序身份( username+pwd ),然后用其对应的公钥加密( key,经过 sys-key 解密后),然后和数据一起发回去,由程序根据自己的私钥解密。

但是可能存在问题 1 (不同编程语言加密算法是否通用?),还有就是该怎么设计这个 api 才能满足系统中各类程序的需求 因为导师又想监控管理所有的请求(做访问控制),只能来一个新的需求就再新增一个 api ?(先不管性能,就是一个辣鸡项目,只是想快捷做完应付老师)

疑问:事务消息和事务中提交消息的差异

Posted: 27 May 2021 10:58 AM PDT

请教一下,基于 MQ 的事务消息比如 RocketMQ 的事务消息和在事务中投递消息,如果投递消息失败则回滚的差异在哪里了。

新手上路,多多包涵。

现在 google 登录一定要绑定手机号了吗?

Posted: 27 May 2021 08:38 AM PDT

刚刚登录一个许久未登录的邮箱,先提示填写辅助邮箱,后面提示填写手机号码,无法跳过,进不去邮箱了?

No comments:

Post a Comment