Postico +1
Coding 已经在生产环境大量使用 grpc + protobuf 作为内部通信的框架和协议,我们最初的 rpc 实现也是构建在 protobuf 上的,但只支持 java,后面发现项目越大使用的语言越多,跨语言通信成了一个问题,刚好那时候 grpc 也开源了,我们就慢慢的从一些小的服务开始切换到 grpc 上,目前大部分内部组件通信已经是通过 grpc 进行了。
我们最初采用 grpc 的目的就是为了规范接口代码和多语言支持,还有它的社区和开发也比较活跃。
简单列举一些优缺点和对比:
grpc 目前还处于 Beta 阶段,但对外的 API 已经稳定,而且已经有很多知名项目在采用了,比如 etcd v3 和 docker containerd。
看到有对 Coding 的经验感兴趣的,我也来分享一下(图片来自 coding blog):
这里主要对一些图上可能不太清楚的部分展开一些介绍:
Coding 后端主要的开发语言是 java 和 go,当然也有少量的 ruby 组件,基本上所有组件都是以微服务的方式运行,相互之间使用 rpc 来通信。Git Server 和 GitD 组件完全使用 go 语言编写,相信大家通过 ssh 客户端的调试信息也可以看到,ssh 协议的路由是通过 golang 的 crypto/ssh 库实现的(公钥存储也是在数据库里的),RepoManager 和 web 后端采用 java 语言编写。
更详细的介绍可以看 coding blog 里这篇关于代码托管架构的文章:CODING 代码托管架构升级之路
CDN 是不是有问题?经常连接超时。
Gem::RemoteFetcher::FetchError: Errno::ETIMEDOUT: Operation timed out - SSL_connect (https://gems.ruby-china.org/gems/fog-vmfusion-0.1.0.gem)
Installing fog-atmos 0.1.0
Installing fog-ecloud 0.3.0
Installing fog-profitbricks 0.0.3
Installing fog-terremark 0.1.0
Installing fog-voxel 0.1.0
Installing fog-aws 0.1.1
Installing fog-brightbox 0.8.0
Installing fog-radosgw 0.0.4
Installing fog-sakuracloud 1.0.1
Installing fog-serverlove 0.1.2
Installing fog-softlayer 0.4.7
Gem::RemoteFetcher::FetchError: Errno::ETIMEDOUT: Operation timed out - SSL_connect (https://gems.ruby-china.org/gems/fog-storm_on_demand-0.1.1.gem)
An error occurred while installing fog-vmfusion (0.1.0), and Bundler cannot continue.
Make sure that `gem install fog-vmfusion -v '0.1.0'` succeeds before bundling.
dig 了下,貌似解析回来的是个加拿大的 IP 地址:
~ dig @114.114.114.114 gems.ruby-china.org
; <<>> DiG 9.10.3-P4 <<>> @114.114.114.114 gems.ruby-china.org
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53557
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;gems.ruby-china.org. IN A
;; ANSWER SECTION:
gems.ruby-china.org. 553 IN CNAME 12f7b4-0.ca.1251971244.clb.myqcloud.com.
12f7b4-0.ca.1251971244.clb.myqcloud.com. 553 IN A 45.113.69.41
;; Query time: 51 msec
;; SERVER: 114.114.114.114#53(114.114.114.114)
;; WHEN: Wed Apr 06 11:05:44 CST 2016
;; MSG SIZE rcvd: 106
好像不支持 iPad?
感觉这个页面好危险的样子,没做限制?https://ruby-china.org/?pp=help
这个问题明显被盖上“性别歧视”的帽子来上纲上线和扩大了,文章或许有些偏离活动主旨,但也只是宣传的角度不是很好,绝没有某些人认为的恶意,都适可而止吧。
class var baseURL: NSURL {
get { return NSURL(string: "http://ruby-china.secipin.com")! }
}
楼主代码里请求的 ruby-china 接口域名用 ruby-china.secipin.com 是什么意思?好没安全感啊。。
已经在 coding 的网站上回答。
深圳的活动,有空的话,我也来支持下 :plus1:
一直在用,还有 Atom 插件能实施检查,非常不错!
在用 Mjolnir:https://github.com/sdegutis/mjolnir,提供 Lua 的 API,配置文件可编程,很不错。
参考 openwrt 上用的 LuCI:http://luci.subsignal.org/
Alfred 党表示 Spotlight 可以关
#15 楼 @Martin91 我们在用,Coding HK 的演示平台就是搭建在 Rackspace 上的。
最低配置和价格:
机械硬盘:
CPU 1 vCPU
RAM 512 MB
System Disk 20 GB
Network 80 Mb / s
Disk I/O Good
Price$ $0.022 / hr
SSD:
CPU 1 vCPU
RAM 1 GB
Boot Source Local
System Disk 20 GB
Network 200 Mb / s
Disk I/O Better
Price$
$0.04 / hr server
$0.005 / hr service
$0.045 / hr total
#17 楼 @moliliang 重启解决 99% 问题,重装系统解决 100% 问题!
#5 楼 @moliliang 没事干多重启重启系统就好了
#17 楼 @chenge 我回答下你演示相关的几个问题吧:
演示文档问题: 你在我们的反馈那里也提过,部分文档已经做了修改,我们一直在改进。你如果对文档某些地方有好的修改建议可以给我们发 pull request (项目地址),文档项目也是运行在演示平台上的。
流行应用提供案例: 官方提供的案例已经不算少了,每种支持的语言都有案例,不少语言还有 2 - 3 个,只是可能案例上使用的框架版本不是最新的,但是也足够说明问题了。http://docs.coding.io/ 上的例子只是一部分,在 demo 用户下还有更多的例子可以查看,或者可以在网站上搜索查看别人已经部署成功的公开项目代码。
网站上只有 node 的案例: 你说的应该是服务的 JSON 解析例子那里吧,这里我觉得用 Node.js 可能更容易接受点,Coding 演示平台主要针对 Web 项目,做 Web 开发的应该都看得懂 JavaScript 吧,这里给出代码的目的是说明使用方法,而不是给用户 Copy 来用,而且 JSON 结构也已经给出了。很抱歉,我们人手有限,无法做到总有时间手把手教用户或者每种语言框架都给出示例代码
工作需求
#21 楼 @xieyunzi 正在努力支持 ing,ruby 环境已经更新到最新的版本,rails4 的支持还在测试中。有问题可以直接 @ 我,我是 Coding 演示的开发者,也是 ruby 粉,咱演示平台的后端就是 Ruby 开发的 。
另外,演示平台刚上线了文档站点:http://docs.coding.io ,有问题可以先到这里找答案。
看看这个是不是你想要的效果?https://github.com/jwilder/nginx-proxy