• 问问关于 go-micro 是不是会限制了项目的生态?

    为什么我要放弃 go-micro 框架?

    经过这些思考过后,我们的决定是去 go-micro 框架,拥抱更轻量级的基础框架。 华尔街见闻基于 istio 的服务网格实践

  • 我们公司有一个ruby 1.9.3 / rails 3.x 的项目

    在用 sidekiq-cron

  • 如何合并这两条语句 at 2019年05月16日
    x = x.to_i.succ
    x = x.to_i.next
    

    或者你自己写一个方法变成你想要的简单,其实,都没什么卵用,还不如宁愿多写几行让别人更容易看懂

  • SSO 是前提,不做SSO你也还是需要想办法做数据共享

    一般场景有两种,全栈 or 前后端分离,但都需要鉴权统一请求SSO

    • 全栈

      Java做Java的,Rails做Rails的,「提供另外一个系统的URL跳转」,通过跳转的方式进行切换,但是在用户体验上来说,浏览器页面始终在一个系统

    • 前后端分离

      前后端分离我知道的两种方式

      1. 前端控制,旧的系统页面不动,新的页面请求Rails API
      2. 流量转发,类似全栈的跳转,将指定规则的流量转到Rails API,使用一些工具如:Nginx

    题主随便建两个应用尝试一下应该就会有想法了💡


    😅 如有意见,还望轻喷 ...

  • obfuscate_id 管用,非常感谢

  • 很抱歉,看到大家的回答我才意识到自己的问题描述的非常差

    这个问题最重要的是在于转成Int的同时,数据已经被混淆

  • 非常感谢大家的积极回答,你们的每一个意见和建议对我都有或多或少的帮助

    最近有点少来了

    目前先用octopus

    能用,有点丑陋

    module CoreExt
      module ActiveRecord
        module ConnectionAdapters
          module ExecutionControl
            # 切换TiDB connection
            def tidb_conn
              ::ActiveRecord::Base.connection_proxy.current_shard = :tidb
              ::ActiveRecord::Base.connection_proxy
            end
    
            # 记录当前线程使用的connection,当切换tidb后,一直使用tidb
            def current_connection
              Thread.current['octopus.select_connection'] ||= :master
            end
    
            def current_connection=(shard_symbol)
              Thread.current['octopus.select_connection'] = shard_symbol
            end
    
            def execute(*args)
              # 只拦截 SELECT 并且是白名单内的
              return super unless args.first =~ /^SELECT/
              # 这里很蠢,用args.last的"Order Load"来判断当前select table
              return super unless WHITELIST.include?(args.last[0...-5])
              if ::ActiveRecord::Base.connection_proxy.current_shard == :master
                if self.current_connection == :master
                  result = super
                  return result if result.count > 0
                  self.current_connection = :tidb
                end
                result = tidb_conn.select_connection.execute(args.first, args.last)
              else
                result = super
                self.current_connection = :tidb
              end
              ::ActiveRecord::Base.connection_proxy.clean_connection_proxy
              result
            end
    
            private
            # 需要使用tidb的 table 名单
            WHITELIST = ["Order"...]
          end
        end
      end
    end
    
    ActiveRecord::ConnectionAdapters::Mysql2Adapter.include CoreExt::ActiveRecord::ConnectionAdapters::ExecutionControl
    

    这个贴先结了吧,有问题再重新开一个 再次感谢大家!!! 🙏 🙏 🙏

  • 用两种DB并不是为了处理冷热的场景而决定使用两种DB, 而是打算使用TiDB,属于试用阶段而考虑让冷数据先放TiDB

    proxy,目前是在研究的,我想的是proxy并非proxy db,毕竟目前还只是针对一个model

    至于你说过家家的方案,sorry,可能是我个人想出来的解决思路有点low

  • 数据已经分布好了,现在正解决如何不造成代码大量修改的情况下兼容分库查询

    目前做了一次在controller使用octopus手动切换查询的实验

    但这个有点痛苦,你得找出所有相关的controller,然后重复着 mysql 找不到去 Tidb

  • 分库是上级决定了

    目前 亿量级别的数据应该都会考虑把查询放在TiDB,Mysql保留热数据 update

    迁移TiDB还属于逐步迁移的过程,这个也是一次TiDB的实验,还不敢全动