🏅Go-Framework by geektutu
00 分钟
2023-5-27
2023-5-28
type
status
date
slug
summary
tags
category
icon
password
Edited
May 28, 2023 08:40 AM
Created
May 28, 2023 08:34 AM
链接
 
自己跟着做的
go-framework-7days
JinSoooUpdated May 15, 2023
 
截取部分

Gee

一个简单的 Web 框架(Gin)
net/http 提供了基础的 Web 功能,即监听端口,映射静态路由,解析 HTTP 报文。一些 Web 开发中简单的需求并不支持,需要手工实现。
  • 动态路由:例如 hello/:name,hello/*这类的规则。
  • 鉴权:没有分组/统一鉴权的能力,需要在每个路由映射的 handler 中实现。
  • 模板:没有统一简化的 HTML 机制。
  • ...
当我们离开框架,使用基础库时,需要频繁手工处理的地方,就是框架的价值所在。那么理解这个微框架提供的特性,可以帮助我们理解框架的核心能力。
  • 路由(Routing):将请求映射到函数,支持动态路由。例如'/hello/:name。
  • 模板(Templates):使用内置模板引擎提供模板渲染机制。
  • 工具集(Utilites):提供对 cookies,headers 等处理机制。
  • 插件(Plugin):Bottle 本身功能有限,但提供了插件机制。可以选择安装到全局,也可以只针对某几个路由生效。
  • ...

特性 👇👇👇

基本使用

GeeCache

一个简单的 分布式缓存 框架(groupcache)
设计一个分布式缓存系统,需要考虑资源控制、淘汰策略、并发、分布式节点通信等各个方面的问题。而且,针对不同的应用场景,还需要在不同的特性之间权衡,例如,是否需要支持缓存更新?还是假定缓存在淘汰之前是不允许改变的。不同的权衡对应着不同的实现。
groupcache 是 Go 语言版的 memcached,目的是在某些特定场合替代 memcached。groupcache 的作者也是 memcached 的作者。无论是了解单机缓存还是分布式缓存,深入学习这个库的实现都是非常有意义的。
GeeCache 基本上模仿了 groupcache 的实现。支持特性有:
  • 单机缓存和基于 HTTP 的分布式缓存
  • 最近最少访问(Least Recently Used, LRU) 缓存策略
  • 使用 Go 锁机制防止缓存击穿
  • 使用一致性哈希选择节点,实现负载均衡
  • 使用 protobuf 优化节点间二进制通信
  • ...

特性 👇👇👇

基本使用

GeeORM

GeeORM 的设计主要参考了 xorm,一些细节上的实现参考了 gorm。GeeORM 的目的主要是了解 ORM 框架设计的原理,具体实现上鲁棒性做得不够,一些复杂的特性,例如 gorm 的关联关系,xorm 的读写分离没有实现。目前支持的特性有:
  • 表的创建、删除、迁移。
  • 记录的增删查改,查询条件的链式操作。
  • 单一主键的设置(primary key)。
  • 钩子(在创建/更新/删除/查找之前或之后)
  • 事务(transaction)。
  • ...

特性 👇👇👇

基本使用

GeeORM

RPC(Remote Procedure Call,远程过程调用)是一种计算机通信协议,允许调用不同进程空间的程序。RPC 的客户端和服务器可以在一台机器上,也可以在不同的机器上。程序员使用时,就像调用本地程序一样,无需关注内部的实现细节。
GeeRPC 选择从零实现 Go 语言官方的标准库 net/rpc,并在此基础上,新增了协议交换(protocol exchange)、注册中心(registry)、服务发现(service discovery)、负载均衡(load balance)、超时处理(timeout processing)等特性。

基本使用

需要导出的方法
 
 
上一篇
Node Cluster 集群
下一篇
图片懒加载 — IntersectionObserver

评论
Loading...